3797 Marc Alff 2012-05-31
WL#6135 PERFORMANCE_SCHEMA ENABLED BY DEFAULT
Removed --table-cache, improved tests.
modified:
mysql-test/r/mysqld--help-notwin.result
mysql-test/r/mysqld--help-win.result
sql/mysqld.cc
sql/mysqld.h
storage/perfschema/pfs_autosize.cc
3796 Marc Alff 2012-05-31 [merge]
Merge mysql-trunk --> mysql-trunk-wl6135
added:
mysql-test/include/wl6301.inc
mysql-test/r/wl6301_1_not_windows.result
mysql-test/r/wl6301_2_not_windows.result
mysql-test/r/wl6301_3.result
mysql-test/t/wl6301_1_not_windows-master.opt
mysql-test/t/wl6301_1_not_windows.test
mysql-test/t/wl6301_2_not_windows-master.opt
mysql-test/t/wl6301_2_not_windows.test
mysql-test/t/wl6301_3-master.opt
mysql-test/t/wl6301_3.test
modified:
mysql-test/r/alter_table.result
mysql-test/r/ipv6.result
mysql-test/r/mysqld--help-notwin.result
mysql-test/r/mysqld--help-win.result
mysql-test/t/alter_table.test
mysql-test/t/ipv6.test
sql/mysqld.cc
sql/sys_vars.cc
storage/innobase/btr/btr0cur.cc
storage/innobase/buf/buf0flu.cc
storage/innobase/include/dict0dict.h
storage/innobase/include/dict0dict.ic
storage/innobase/include/row0mysql.h
storage/innobase/row/row0ins.cc
storage/innobase/row/row0mysql.cc
3795 Marc Alff 2012-05-31
Test cleanup, test using platforms with PFS_ALIGN only
added:
mysql-test/suite/perfschema/include/have_aligned_memory.inc
modified:
mysql-test/suite/perfschema/t/sizing_default.test
mysql-test/suite/perfschema/t/sizing_high.test
mysql-test/suite/perfschema/t/sizing_low.test
mysql-test/suite/perfschema/t/sizing_med.test
=== added file 'mysql-test/include/wl6301.inc'
--- a/mysql-test/include/wl6301.inc 1970-01-01 00:00:00 +0000
+++ b/mysql-test/include/wl6301.inc 2012-05-31 08:58:12 +0000
@@ -0,0 +1,128 @@
+--source include/not_windows.inc
+
+--perl
+my $MYSQL = $ENV{'MYSQL'};
+my $MYSQLADMIN = $ENV{'MYSQLADMIN'};
+my $MASTER_MYPORT = $ENV{'MASTER_MYPORT'};
+my $MYSQLTEST_VARDIR = $ENV{'MYSQLTEST_VARDIR'};
+my $LOG_FILE = $ENV{'WL6301_LOG_FILE'};
+
+my @ipv4_addresses = split (/\n/, `ifconfig | grep 'inet addr' | sed 's/^.*inet addr://' | sed 's/ .*\$//'`);
+my @ipv6_addresses = split (/\n/, `ifconfig | grep 'inet6 addr.*Scope:Global' | sed 's/^.*inet6 addr: //' | sed 's/ .*\$//' | sed 's|/.*\$||'`);
+
+push (@ipv6_addresses, '::1');
+
+open (LOGFH, ">$LOG_FILE") or
+ die "Can not open '$LOG_FILE': $!\n";
+
+my $ipv4_failed = 0;
+
+foreach my $ip (@ipv4_addresses)
+{
+ print LOGFH "- ipv4: '$ip'\n";
+
+ my $rc =
+ system(
+ "$MYSQL " .
+ "--host=127.0.0.1 " .
+ "--port=$MASTER_MYPORT " .
+ "--user=root " .
+ "test " .
+ "-e 'GRANT ALL PRIVILEGES ON test.* TO u1@$ip;'");
+
+ print LOGFH " GRANT status: $rc\n";
+
+ $ipv4_failed |= $rc;
+
+ $rc =
+ system(
+ "$MYSQLADMIN " .
+ "--host=$ip " .
+ "--port=$MASTER_MYPORT " .
+ "--user=u1 " .
+ "ping > /dev/null 2>&1");
+
+ print LOGFH " Connect u1@$ip status: $rc\n";
+
+ $ipv4_failed |= $rc;
+
+ $rc =
+ system(
+ "$MYSQL " .
+ "--host=127.0.0.1 " .
+ "--port=$MASTER_MYPORT " .
+ "--user=root " .
+ "test " .
+ "-e 'DROP USER u1@$ip;'");
+
+ print LOGFH " DROP USER status: $rc\n";
+
+ $ipv4_failed |= $rc;
+}
+
+my $ipv6_failed = 0;
+
+foreach my $ip (@ipv6_addresses)
+{
+ print LOGFH "- ipv6: '$ip'\n";
+
+ my $rc =
+ system(
+ "$MYSQL " .
+ "--host=127.0.0.1 " .
+ "--port=$MASTER_MYPORT " .
+ "--user=root " .
+ "test " .
+ "-e 'GRANT ALL PRIVILEGES ON test.* TO u1@$ip;'");
+
+ print LOGFH " GRANT status: $rc\n";
+
+ $ipv6_failed |= $rc;
+
+ $rc =
+ system(
+ "$MYSQLADMIN " .
+ "--host=$ip " .
+ "--port=$MASTER_MYPORT " .
+ "--user=u1 " .
+ "ping > /dev/null 2>&1");
+
+ print LOGFH " Connect u1@$ip status: $rc\n";
+
+ $ipv6_failed |= $rc;
+
+ $rc =
+ system(
+ "$MYSQL " .
+ "--host=127.0.0.1 " .
+ "--port=$MASTER_MYPORT " .
+ "--user=root " .
+ "test " .
+ "-e 'DROP USER u1@$ip;'");
+
+ print LOGFH " DROP USER status: $rc\n";
+
+ $ipv6_failed |= $rc;
+}
+
+close LOGFH;
+
+unless ($ipv4_failed)
+{
+ print "IPv4 connectivity: OK\n";
+}
+else
+{
+ print "IPv4 connectivity: FAIL\n";
+}
+
+unless ($ipv6_failed)
+{
+ print "IPv6 connectivity: OK\n";
+}
+else
+{
+ print "IPv6 connectivity: FAIL\n";
+}
+
+EOF
=== modified file 'mysql-test/r/alter_table.result'
--- a/mysql-test/r/alter_table.result 2012-05-18 11:06:00 +0000
+++ b/mysql-test/r/alter_table.result 2012-05-31 08:18:44 +0000
@@ -1651,6 +1651,12 @@ info: Records: 2 Duplicates: 0 Warning
ALTER TABLE tm1 ADD COLUMN d VARCHAR(200);
affected rows: 2
info: Records: 2 Duplicates: 0 Warnings: 0
+ALTER TABLE ti1 ADD COLUMN d2 VARCHAR(200);
+affected rows: 2
+info: Records: 2 Duplicates: 0 Warnings: 0
+ALTER TABLE tm1 ADD COLUMN d2 VARCHAR(200);
+affected rows: 2
+info: Records: 2 Duplicates: 0 Warnings: 0
ALTER TABLE ti1 ADD COLUMN e ENUM('a', 'b') FIRST;
affected rows: 2
info: Records: 2 Duplicates: 0 Warnings: 0
@@ -1669,12 +1675,6 @@ info: Records: 0 Duplicates: 0 Warning
ALTER TABLE tm1 ADD INDEX im1(b);
affected rows: 2
info: Records: 2 Duplicates: 0 Warnings: 0
-ALTER TABLE ti1 ADD PRIMARY KEY (a);
-affected rows: 0
-info: Records: 0 Duplicates: 0 Warnings: 0
-ALTER TABLE tm1 ADD PRIMARY KEY (a);
-affected rows: 2
-info: Records: 2 Duplicates: 0 Warnings: 0
ALTER TABLE ti1 ADD UNIQUE INDEX ii2 (c);
affected rows: 0
info: Records: 0 Duplicates: 0 Warnings: 0
@@ -1689,6 +1689,26 @@ Warning 124 InnoDB rebuilding table to a
ALTER TABLE tm1 ADD FULLTEXT INDEX im3 (d);
affected rows: 2
info: Records: 2 Duplicates: 0 Warnings: 0
+ALTER TABLE ti1 ADD FULLTEXT INDEX ii4 (d2);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE tm1 ADD FULLTEXT INDEX im4 (d2);
+affected rows: 2
+info: Records: 2 Duplicates: 0 Warnings: 0
+ALTER TABLE ti1 ADD PRIMARY KEY(a);
+ERROR HY000: InnoDB presently supports one FULLTEXT index creation at a time
+ALTER TABLE ti1 ADD PRIMARY KEY(a), ALGORITHM=COPY;
+affected rows: 2
+info: Records: 2 Duplicates: 0 Warnings: 0
+ALTER TABLE tm1 ADD PRIMARY KEY(a);
+affected rows: 2
+info: Records: 2 Duplicates: 0 Warnings: 0
+ALTER TABLE ti1 DROP COLUMN d2;
+affected rows: 2
+info: Records: 2 Duplicates: 0 Warnings: 0
+ALTER TABLE tm1 DROP COLUMN d2;
+affected rows: 2
+info: Records: 2 Duplicates: 0 Warnings: 0
ALTER TABLE ti1 ADD CONSTRAINT fi1 FOREIGN KEY (b) REFERENCES ti2(a);
affected rows: 2
info: Records: 2 Duplicates: 0 Warnings: 0
=== modified file 'mysql-test/r/ipv6.result'
--- a/mysql-test/r/ipv6.result 2011-05-03 13:04:00 +0000
+++ b/mysql-test/r/ipv6.result 2012-05-31 08:58:12 +0000
@@ -108,6 +108,120 @@ DROP TABLE IF EXISTS t1;
SELECT inet6_ntoa(@nip6);
inet6_ntoa(@nip6)
::1
+=============Test of '127.0.0.1' (IPv4) ===========================
+mysqld is alive
+CREATE USER testuser@'127.0.0.1' identified by '1234';
+GRANT ALL ON test.* TO testuser@'127.0.0.1';
+SHOW GRANTS FOR testuser@'127.0.0.1';
+Grants for testuser@stripped
+GRANT USAGE ON *.* TO 'testuser'@'127.0.0.1' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF'
+GRANT ALL PRIVILEGES ON `test`.* TO 'testuser'@'127.0.0.1'
+SELECT USER();
+USER()
+root@localhost
+SELECT current_user();
+current_user()
+root@localhost
+SHOW PROCESSLIST;
+REVOKE ALL ON test.* FROM testuser@'127.0.0.1';
+RENAME USER testuser@'127.0.0.1' to testuser1@'127.0.0.1';
+SET PASSWORD FOR testuser1@'127.0.0.1' = PASSWORD ('9876');
+SELECT USER();
+USER()
+root@localhost
+DROP USER testuser1@'127.0.0.1';
+SET @nip= inet_aton('127.0.0.1');
+CREATE TABLE t1 (c1 varbinary(16), c2 varchar(16), c3 binary(16), c4 char(16), c5 long, c6 int);
+INSERT INTO t1 VALUES (@nip,@nip,@nip,@nip,@nip,@nip);
+SELECT inet_ntoa(c1) FROM t1;
+inet_ntoa(c1)
+127.0.0.1
+SELECT inet_ntoa(CAST(c1 AS UNSIGNED)) FROM t1;
+inet_ntoa(CAST(c1 AS UNSIGNED))
+127.0.0.1
+SELECT inet_ntoa(c2) FROM t1;
+inet_ntoa(c2)
+127.0.0.1
+SELECT inet_ntoa(CAST(c2 AS UNSIGNED)) FROM t1;
+inet_ntoa(CAST(c2 AS UNSIGNED))
+127.0.0.1
+SELECT inet_ntoa(c3) FROM t1;
+inet_ntoa(c3)
+127.0.0.1
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: '2130706433\x00\x00\x00\x00\x00\x00'
+SELECT inet_ntoa(CAST(c3 AS UNSIGNED)) FROM t1;
+inet_ntoa(CAST(c3 AS UNSIGNED))
+127.0.0.1
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: '2130706433\x00\x00\x00\x00\x00\x00'
+SELECT inet_ntoa(c4) FROM t1;
+inet_ntoa(c4)
+127.0.0.1
+SELECT inet_ntoa(CAST(c4 AS UNSIGNED)) FROM t1;
+inet_ntoa(CAST(c4 AS UNSIGNED))
+127.0.0.1
+SELECT inet_ntoa(c5) FROM t1;
+inet_ntoa(c5)
+127.0.0.1
+SELECT inet_ntoa(CAST(c5 AS UNSIGNED)) FROM t1;
+inet_ntoa(CAST(c5 AS UNSIGNED))
+127.0.0.1
+SELECT inet_ntoa(c6) FROM t1;
+inet_ntoa(c6)
+127.0.0.1
+DROP TABLE IF EXISTS t1;
+SELECT @nip;
+@nip
+2130706433
+SELECT inet_ntoa(@nip);
+inet_ntoa(@nip)
+127.0.0.1
+SET @nip6= inet6_aton('127.0.0.1');
+CREATE TABLE t1 (c1 varbinary(16), c2 varchar(16), c3 binary(16), c4 char(16), c5 long, c6 int);
+INSERT INTO t1 VALUES (@nip6,@nip6,@nip6,@nip6,@nip6,@nip6);
+Warnings:
+Warning 1366 Incorrect integer value: '\x7F\x00\x00\x01' for column 'c6' at row 1
+SELECT inet6_ntoa(c1) FROM t1;
+inet6_ntoa(c1)
+127.0.0.1
+SELECT inet6_ntoa(CAST(c1 AS BINARY(16))) FROM t1;
+inet6_ntoa(CAST(c1 AS BINARY(16)))
+7f00:1::
+SELECT inet6_ntoa(c2) FROM t1;
+inet6_ntoa(c2)
+NULL
+SELECT inet6_ntoa(CAST(c2 AS BINARY(16))) FROM t1;
+inet6_ntoa(CAST(c2 AS BINARY(16)))
+7f00:1::
+SELECT inet6_ntoa(c3) FROM t1;
+inet6_ntoa(c3)
+7f00:1::
+SELECT inet6_ntoa(CAST(c3 AS BINARY(16))) FROM t1;
+inet6_ntoa(CAST(c3 AS BINARY(16)))
+7f00:1::
+SELECT inet6_ntoa(c4) FROM t1;
+inet6_ntoa(c4)
+NULL
+SELECT inet6_ntoa(CAST(c4 AS BINARY(16))) FROM t1;
+inet6_ntoa(CAST(c4 AS BINARY(16)))
+7f00:1::
+SELECT inet6_ntoa(c5) FROM t1;
+inet6_ntoa(c5)
+NULL
+SELECT inet6_ntoa(CAST(c5 AS BINARY(16))) FROM t1;
+inet6_ntoa(CAST(c5 AS BINARY(16)))
+7f00:1::
+SELECT inet6_ntoa(c6) FROM t1;
+inet6_ntoa(c6)
+NULL
+SELECT inet6_ntoa(CAST(c6 AS BINARY(16))) FROM t1;
+inet6_ntoa(CAST(c6 AS BINARY(16)))
+3000::
+DROP TABLE IF EXISTS t1;
+SELECT inet6_ntoa(@nip6);
+inet6_ntoa(@nip6)
+127.0.0.1
=============Test of '::1/128' ====================================
=============Test of '0000:0000:0000:0000:0000:0000:0000:0001' ====
mysqld is alive
=== modified file 'mysql-test/r/mysqld--help-notwin.result'
--- a/mysql-test/r/mysqld--help-notwin.result 2012-05-29 17:39:06 +0000
+++ b/mysql-test/r/mysqld--help-notwin.result 2012-05-31 11:14:10 +0000
@@ -890,7 +890,6 @@ The following options may be given as th
safe-replicable. Since 5.0, SYSDATE() returns a `dynamic'
value different for different invocations, even within
the same statement.
- --table-cache=# Deprecated; use --table-open-cache instead.
--table-definition-cache=#
The number of cached table definitions
--table-open-cache=#
@@ -949,7 +948,7 @@ autocommit TRUE
automatic-sp-privileges TRUE
back-log 50
big-tables FALSE
-bind-address 0.0.0.0
+bind-address ::
binlog-cache-size 32768
binlog-checksum NONE
binlog-direct-non-transactional-updates FALSE
@@ -1201,7 +1200,6 @@ sync-master-info 0
sync-relay-log 0
sync-relay-log-info 0
sysdate-is-now FALSE
-table-cache 400
table-definition-cache 400
table-open-cache 400
table-open-cache-instances 1
=== modified file 'mysql-test/r/mysqld--help-win.result'
--- a/mysql-test/r/mysqld--help-win.result 2012-05-29 23:35:24 +0000
+++ b/mysql-test/r/mysqld--help-win.result 2012-05-31 11:14:10 +0000
@@ -898,7 +898,6 @@ The following options may be given as th
safe-replicable. Since 5.0, SYSDATE() returns a `dynamic'
value different for different invocations, even within
the same statement.
- --table-cache=# Deprecated; use --table-open-cache instead.
--table-definition-cache=#
The number of cached table definitions
--table-open-cache=#
@@ -957,7 +956,7 @@ autocommit TRUE
automatic-sp-privileges TRUE
back-log 50
big-tables FALSE
-bind-address 0.0.0.0
+bind-address ::
binlog-cache-size 32768
binlog-checksum NONE
binlog-direct-non-transactional-updates FALSE
@@ -1212,7 +1211,6 @@ sync-master-info 0
sync-relay-log 0
sync-relay-log-info 0
sysdate-is-now FALSE
-table-cache 400
table-definition-cache 400
table-open-cache 400
table-open-cache-instances 1
=== added file 'mysql-test/r/wl6301_1_not_windows.result'
--- a/mysql-test/r/wl6301_1_not_windows.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/wl6301_1_not_windows.result 2012-05-31 08:58:12 +0000
@@ -0,0 +1,2 @@
+IPv4 connectivity: OK
+IPv6 connectivity: OK
=== added file 'mysql-test/r/wl6301_2_not_windows.result'
--- a/mysql-test/r/wl6301_2_not_windows.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/wl6301_2_not_windows.result 2012-05-31 08:58:12 +0000
@@ -0,0 +1,2 @@
+IPv4 connectivity: OK
+IPv6 connectivity: FAIL
=== added file 'mysql-test/r/wl6301_3.result'
--- a/mysql-test/r/wl6301_3.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/wl6301_3.result 2012-05-31 08:58:12 +0000
@@ -0,0 +1,4 @@
+# Checking ::ffff:127.0.0.1 ...
+mysqld is alive
+# Checking 127.0.0.1 ...
+mysqld is alive
=== modified file 'mysql-test/t/alter_table.test'
--- a/mysql-test/t/alter_table.test 2012-04-11 13:50:46 +0000
+++ b/mysql-test/t/alter_table.test 2012-05-31 08:18:44 +0000
@@ -1440,6 +1440,8 @@ ALTER TABLE tm1;
ALTER TABLE ti1 ADD COLUMN d VARCHAR(200);
ALTER TABLE tm1 ADD COLUMN d VARCHAR(200);
+ALTER TABLE ti1 ADD COLUMN d2 VARCHAR(200);
+ALTER TABLE tm1 ADD COLUMN d2 VARCHAR(200);
ALTER TABLE ti1 ADD COLUMN e ENUM('a', 'b') FIRST;
ALTER TABLE tm1 ADD COLUMN e ENUM('a', 'b') FIRST;
ALTER TABLE ti1 ADD COLUMN f INT AFTER a;
@@ -1447,12 +1449,21 @@ ALTER TABLE tm1 ADD COLUMN f INT AFTER a
ALTER TABLE ti1 ADD INDEX ii1(b);
ALTER TABLE tm1 ADD INDEX im1(b);
-ALTER TABLE ti1 ADD PRIMARY KEY (a);
-ALTER TABLE tm1 ADD PRIMARY KEY (a);
ALTER TABLE ti1 ADD UNIQUE INDEX ii2 (c);
ALTER TABLE tm1 ADD UNIQUE INDEX im2 (c);
ALTER TABLE ti1 ADD FULLTEXT INDEX ii3 (d);
ALTER TABLE tm1 ADD FULLTEXT INDEX im3 (d);
+ALTER TABLE ti1 ADD FULLTEXT INDEX ii4 (d2);
+ALTER TABLE tm1 ADD FULLTEXT INDEX im4 (d2);
+
+# Bug#14140038 INCONSISTENT HANDLING OF FULLTEXT INDEXES IN ALTER TABLE
+--error ER_INNODB_FT_LIMIT
+ALTER TABLE ti1 ADD PRIMARY KEY(a);
+ALTER TABLE ti1 ADD PRIMARY KEY(a), ALGORITHM=COPY;
+ALTER TABLE tm1 ADD PRIMARY KEY(a);
+
+ALTER TABLE ti1 DROP COLUMN d2;
+ALTER TABLE tm1 DROP COLUMN d2;
ALTER TABLE ti1 ADD CONSTRAINT fi1 FOREIGN KEY (b) REFERENCES ti2(a);
ALTER TABLE tm1 ADD CONSTRAINT fm1 FOREIGN KEY (b) REFERENCES tm2(a);
=== modified file 'mysql-test/t/ipv6.test'
--- a/mysql-test/t/ipv6.test 2011-10-19 21:49:22 +0000
+++ b/mysql-test/t/ipv6.test 2012-05-31 08:58:12 +0000
@@ -14,6 +14,12 @@ let $IPv6= ::1;
--source include/ipv6.inc
--source include/ipv6_func.inc
+echo =============Test of '127.0.0.1' (IPv4) ===========================;
+let $IPv6= 127.0.0.1;
+--source include/ipv6_clients.inc
+--source include/ipv6.inc
+--source include/ipv6_func.inc
+
echo =============Test of '::1/128' ====================================;
let $IPv6= ::1/128;
#--source include/ipv6_clients.inc
=== added file 'mysql-test/t/wl6301_1_not_windows-master.opt'
--- a/mysql-test/t/wl6301_1_not_windows-master.opt 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/wl6301_1_not_windows-master.opt 2012-05-31 08:58:12 +0000
@@ -0,0 +1 @@
+--skip-name-resolve
=== added file 'mysql-test/t/wl6301_1_not_windows.test'
--- a/mysql-test/t/wl6301_1_not_windows.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/wl6301_1_not_windows.test 2012-05-31 08:58:12 +0000
@@ -0,0 +1,16 @@
+# WL#6301: Change default value for the 'bind-address' option
+#
+# 1. Check that by default the server accepts client connections on all
+# server host IPv4 and IPv6 interfaces.
+#
+# Options: --skip-name-resolve (see corresponding opt file).
+#
+
+--source include/check_ipv6.inc
+
+# Can't be tested with embedded server
+--source include/not_embedded.inc
+
+--let WL6301_LOG_FILE = $MYSQLTEST_VARDIR/log/wl6301_1_not_windows.debug.log
+
+--source include/wl6301.inc
=== added file 'mysql-test/t/wl6301_2_not_windows-master.opt'
--- a/mysql-test/t/wl6301_2_not_windows-master.opt 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/wl6301_2_not_windows-master.opt 2012-05-31 08:58:12 +0000
@@ -0,0 +1 @@
+--skip-name-resolve --bind-address=0.0.0.0
=== added file 'mysql-test/t/wl6301_2_not_windows.test'
--- a/mysql-test/t/wl6301_2_not_windows.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/wl6301_2_not_windows.test 2012-05-31 08:58:12 +0000
@@ -0,0 +1,15 @@
+# WL#6301: Change default value for the 'bind-address' option
+#
+# 2. Check that if the server is started with bind-address=0.0.0.0,
+# the server accepts client connections on all server host IPv4,
+# but not IPv6 interfaces.
+#
+# Options: --skip-name-resolve --bind-address=0.0.0.0 (see corresponding opt file).
+#
+
+# Can't be tested with embedded server
+--source include/not_embedded.inc
+
+--let WL6301_LOG_FILE = $MYSQLTEST_VARDIR/log/wl6301_2_not_windows.debug.log
+
+--source include/wl6301.inc
=== added file 'mysql-test/t/wl6301_3-master.opt'
--- a/mysql-test/t/wl6301_3-master.opt 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/wl6301_3-master.opt 2012-05-31 08:58:12 +0000
@@ -0,0 +1 @@
+--skip-name-resolve --bind-address=::ffff:127.0.0.1
=== added file 'mysql-test/t/wl6301_3.test'
--- a/mysql-test/t/wl6301_3.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/wl6301_3.test 2012-05-31 08:58:12 +0000
@@ -0,0 +1,23 @@
+# WL#6301: Change default value for the 'bind-address' option
+#
+# 3. Check that if the server is bound to the IPv4-mapped IPv6-address,
+# the server accepts client connections from both IPv4 and IPv6 worlds.
+#
+# Options: --skip-name-resolve, --bind-address=::ffff:127.0.0.1
+# (see corresponding opt file).
+#
+
+# Can't be tested with embedded server
+--source include/not_embedded.inc
+
+# The box should support IPv4-mapped addresses
+--source include/have_ipv4_mapped.inc
+
+--echo # Checking ::ffff:127.0.0.1 ...
+--exec $MYSQLADMIN --no-defaults --default-character-set=latin1 -h ::ffff:127.0.0.1 -P $MASTER_MYPORT -u root ping
+
+--echo # Checking 127.0.0.1 ...
+--exec $MYSQLADMIN --no-defaults --default-character-set=latin1 -h 127.0.0.1 -P $MASTER_MYPORT -u root ping
+
+# NOTE: ::1 has nothing to do with ::ffff:127.0.0.1, so the server bound to
+# ::ffff:127.0.0.1 will not accept connections from to ::1.
=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc 2012-05-30 11:44:42 +0000
+++ b/sql/mysqld.cc 2012-05-31 11:14:10 +0000
@@ -493,7 +493,6 @@ ulong tc_heuristic_recover= 0;
int32 thread_running;
ulong thread_created;
ulong back_log, connect_timeout, concurrency, server_id;
-ulong deprecated_table_cache_size;
ulong table_cache_size, table_def_size;
ulong table_cache_instances;
ulong table_cache_size_per_instance;
@@ -2023,8 +2022,8 @@ static MYSQL_SOCKET create_socket(const
char ip_addr[INET6_ADDRSTRLEN];
- if (vio_get_normalized_ip_string(cur_ai->ai_addr, cur_ai->ai_addrlen,
- ip_addr, sizeof (ip_addr)))
+ if (vio_getnameinfo(cur_ai->ai_addr, ip_addr, sizeof (ip_addr),
+ NULL, 0, NI_NUMERICHOST))
{
ip_addr[0]= 0;
}
@@ -2081,7 +2080,7 @@ static void network_init(void)
if (mysqld_port != 0 && !opt_disable_networking && !opt_bootstrap)
{
- struct addrinfo *ai, *a;
+ struct addrinfo *ai;
struct addrinfo hints;
sql_print_information("Server hostname (bind-address): '%s'; port: %d",
@@ -2106,8 +2105,8 @@ static void network_init(void)
{
char ip_addr[INET6_ADDRSTRLEN];
- if (vio_get_normalized_ip_string(cur_ai->ai_addr, cur_ai->ai_addrlen,
- ip_addr, sizeof (ip_addr)))
+ if (vio_getnameinfo(cur_ai->ai_addr, ip_addr, sizeof (ip_addr),
+ NULL, 0, NI_NUMERICHOST))
{
sql_print_error("Fails to print out IP-address.");
continue;
@@ -2126,6 +2125,7 @@ static void network_init(void)
returned by getaddrinfo();
*/
+ struct addrinfo *a;
ip_sock= create_socket(ai, AF_INET, &a);
if (mysql_socket_getfd(ip_sock) == INVALID_SOCKET)
@@ -2162,8 +2162,14 @@ static void network_init(void)
if (a->ai_family == AF_INET6)
{
arg= 0;
- (void) mysql_socket_setsockopt(ip_sock, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&arg,
- sizeof(arg));
+
+ if (mysql_socket_setsockopt(ip_sock, IPPROTO_IPV6, IPV6_V6ONLY,
+ (char *) &arg, sizeof (arg)))
+ {
+ sql_print_warning("Failed to reset IPV6_V6ONLY flag (error: %d). "
+ "The server will listen to IPv6 addresses only.",
+ (int) socket_errno);
+ }
}
#endif
/*
@@ -6469,16 +6475,6 @@ void adjust_related_options()
/* In bootstrap, disable grant tables (we are about to create them) */
if (opt_bootstrap)
opt_noacl= 1;
-
- /*
- For handle_options(), --table-cache and --table-open-cache
- are distinct configuration parameters, and should not point to
- the same global variable table_cache_size.
- Use deprecated --table-cache if no value was given in --table-open-cache.
- */
- if ((table_cache_size == TABLE_OPEN_CACHE_DEFAULT) &&
- (deprecated_table_cache_size != TABLE_OPEN_CACHE_DEFAULT))
- table_cache_size= deprecated_table_cache_size;
}
vector<my_option> all_options;
@@ -6502,9 +6498,6 @@ struct my_option my_long_early_options[]
&opt_verbose, &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
- {"table_cache", 0, "Deprecated; use --table-open-cache instead.",
- &deprecated_table_cache_size, &deprecated_table_cache_size, 0, GET_ULONG,
- REQUIRED_ARG, TABLE_OPEN_CACHE_DEFAULT, 1, 512*1024L, 0, 1, 0},
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
=== modified file 'sql/mysqld.h'
--- a/sql/mysqld.h 2012-05-30 11:44:42 +0000
+++ b/sql/mysqld.h 2012-05-31 11:14:10 +0000
@@ -183,7 +183,6 @@ extern ulong delayed_rows_in_use,delayed
extern int32 slave_open_temp_tables;
extern ulong query_cache_size, query_cache_min_res_unit;
extern ulong slow_launch_threads, slow_launch_time;
-extern ulong deprecated_table_cache_size;
extern ulong table_cache_size, table_def_size;
extern ulong table_cache_size_per_instance, table_cache_instances;
extern MYSQL_PLUGIN_IMPORT ulong max_connections;
=== modified file 'sql/sys_vars.cc'
--- a/sql/sys_vars.cc 2012-05-30 11:44:42 +0000
+++ b/sql/sys_vars.cc 2012-05-31 10:30:16 +0000
@@ -557,7 +557,7 @@ static Sys_var_charptr Sys_basedir(
static Sys_var_charptr Sys_my_bind_addr(
"bind_address", "IP address to bind to.",
READ_ONLY GLOBAL_VAR(my_bind_addr_str), CMD_LINE(REQUIRED_ARG),
- IN_FS_CHARSET, DEFAULT("0.0.0.0"));
+ IN_FS_CHARSET, DEFAULT("::"));
static bool fix_binlog_cache_size(sys_var *self, THD *thd, enum_var_type type)
{
=== modified file 'storage/innobase/btr/btr0cur.cc'
--- a/storage/innobase/btr/btr0cur.cc 2012-05-14 21:43:25 +0000
+++ b/storage/innobase/btr/btr0cur.cc 2012-05-31 01:16:59 +0000
@@ -482,7 +482,7 @@ btr_cur_search_to_nth_level(
#else
switch (latch_mode) {
default:
- if (level == 0) {
+ if (level == 0 || !dict_index_is_online_ddl(index)) {
break;
}
/* fall through */
=== modified file 'storage/innobase/buf/buf0flu.cc'
--- a/storage/innobase/buf/buf0flu.cc 2012-05-30 03:28:41 +0000
+++ b/storage/innobase/buf/buf0flu.cc 2012-05-31 09:09:30 +0000
@@ -2576,6 +2576,7 @@ buf_pool_get_dirty_pages_count(
{
ulint count = 0;
+ buf_pool_mutex_enter(buf_pool);
buf_flush_list_mutex_enter(buf_pool);
buf_page_t* bpage;
@@ -2594,6 +2595,7 @@ buf_pool_get_dirty_pages_count(
}
buf_flush_list_mutex_exit(buf_pool);
+ buf_pool_mutex_exit(buf_pool);
return(count);
}
=== modified file 'storage/innobase/include/dict0dict.h'
--- a/storage/innobase/include/dict0dict.h 2012-05-29 09:49:15 +0000
+++ b/storage/innobase/include/dict0dict.h 2012-05-31 01:16:59 +0000
@@ -666,6 +666,15 @@ dict_table_get_first_index(
const dict_table_t* table) /*!< in: table */
__attribute__((nonnull, warn_unused_result));
/********************************************************************//**
+Gets the last index on the table.
+@return index, NULL if none exists */
+UNIV_INLINE
+dict_index_t*
+dict_table_get_last_index(
+/*=======================*/
+ const dict_table_t* table) /*!< in: table */
+ __attribute__((nonnull, warn_unused_result));
+/********************************************************************//**
Gets the next index on the table.
@return index, NULL if none left */
UNIV_INLINE
@@ -676,6 +685,7 @@ dict_table_get_next_index(
__attribute__((nonnull, warn_unused_result));
#else /* UNIV_DEBUG */
# define dict_table_get_first_index(table) UT_LIST_GET_FIRST((table)->indexes)
+# define dict_table_get_last_index(table) UT_LIST_GET_LAST((table)->indexes)
# define dict_table_get_next_index(index) UT_LIST_GET_NEXT(indexes, index)
#endif /* UNIV_DEBUG */
#endif /* !UNIV_HOTBACKUP */
=== modified file 'storage/innobase/include/dict0dict.ic'
--- a/storage/innobase/include/dict0dict.ic 2012-05-03 07:57:31 +0000
+++ b/storage/innobase/include/dict0dict.ic 2012-05-31 01:16:59 +0000
@@ -224,6 +224,22 @@ dict_table_get_first_index(
}
/********************************************************************//**
+Gets the last index on the table.
+@return index, NULL if none exists */
+UNIV_INLINE
+dict_index_t*
+dict_table_get_last_index(
+/*=======================*/
+ const dict_table_t* table) /*!< in: table */
+{
+ ut_ad(table);
+ ut_ad(table->magic_n == DICT_TABLE_MAGIC_N);
+
+ return(UT_LIST_GET_LAST((const_cast<dict_table_t*>(table))
+ ->indexes));
+}
+
+/********************************************************************//**
Gets the next index on the table.
@return index, NULL if none left */
UNIV_INLINE
=== modified file 'storage/innobase/include/row0mysql.h'
--- a/storage/innobase/include/row0mysql.h 2012-04-12 12:34:18 +0000
+++ b/storage/innobase/include/row0mysql.h 2012-05-31 01:16:59 +0000
@@ -724,6 +724,11 @@ struct row_prebuilt_struct {
columns in the table */
upd_node_t* upd_node; /*!< Innobase SQL update node used
to perform updates and deletes */
+ trx_id_t trx_id; /*!< The transaction id of the last
+ index of the table, when the insert
+ query graph was built. We use it for
+ checking whether the insert query
+ graphs needs to be rebuilt */
que_fork_t* ins_graph; /*!< Innobase SQL query graph used
in inserts */
que_fork_t* upd_graph; /*!< Innobase SQL query graph used
=== modified file 'storage/innobase/row/row0ins.cc'
--- a/storage/innobase/row/row0ins.cc 2012-05-15 12:17:11 +0000
+++ b/storage/innobase/row/row0ins.cc 2012-05-31 01:16:59 +0000
@@ -111,7 +111,6 @@ ins_node_create_entry_list(
dict_index_t* index;
dtuple_t* entry;
- ut_ad(node->ins_type != INS_DIRECT);
ut_ad(node->entry_sys_heap);
UT_LIST_INIT(node->entry_list);
@@ -207,9 +206,7 @@ ins_node_set_new_row(
/* Create templates for index entries */
- if (node->ins_type != INS_DIRECT) {
- ins_node_create_entry_list(node);
- }
+ ins_node_create_entry_list(node);
/* Allocate from entry_sys_heap buffers for sys fields */
@@ -2460,7 +2457,7 @@ row_ins_index_entry(
/***********************************************************//**
Sets the values of the dtuple fields in entry from the values of appropriate
columns in row. */
-static
+static __attribute__((nonnull))
void
row_ins_index_entry_set_vals(
/*=========================*/
@@ -2471,9 +2468,6 @@ row_ins_index_entry_set_vals(
ulint n_fields;
ulint i;
- ut_ad(row);
- ut_ad(entry);
-
n_fields = dtuple_get_n_fields(entry);
for (i = 0; i < n_fields; i++) {
@@ -2637,24 +2631,22 @@ row_ins(
ins_node_t* node, /*!< in: row insert node */
que_thr_t* thr) /*!< in: query thread */
{
+ dberr_t err;
+
if (node->state == INS_NODE_ALLOC_ROW_ID) {
row_ins_alloc_row_id_step(node);
node->index = dict_table_get_first_index(node->table);
+ node->entry = UT_LIST_GET_FIRST(node->entry_list);
+
+ if (node->ins_type == INS_SEARCHED) {
- switch (node->ins_type) {
- case INS_DIRECT:
- node->entry = NULL;
- break;
- case INS_SEARCHED:
- node->entry = UT_LIST_GET_FIRST(node->entry_list);
row_ins_get_row_from_select(node);
- break;
- case INS_VALUES:
- node->entry = UT_LIST_GET_FIRST(node->entry_list);
+
+ } else if (node->ins_type == INS_VALUES) {
+
row_ins_get_row_from_values(node);
- break;
}
node->state = INS_NODE_INSERT_ENTRIES;
@@ -2663,42 +2655,23 @@ row_ins(
ut_ad(node->state == INS_NODE_INSERT_ENTRIES);
while (node->index != NULL) {
- dberr_t err;
+ if (node->index->type != DICT_FTS) {
+ err = row_ins_index_entry_step(node, thr);
- if (node->index->type & DICT_FTS) {
- goto next_index;
- }
-
- if (node->ins_type == INS_DIRECT) {
- /* node->entry == NULL here, except when
- row_ins_index_entry_step() returned
- DB_LOCK_WAIT on the previous call and
- row_insert_for_mysql() retried the insert. */
- node->entry = row_build_index_entry(
- node->row, NULL, node->index,
- node->entry_sys_heap);
- }
-
- err = row_ins_index_entry_step(node, thr);
-
- if (err != DB_SUCCESS) {
+ if (err != DB_SUCCESS) {
- return(err);
+ return(err);
+ }
}
-next_index:
node->index = dict_table_get_next_index(node->index);
- node->entry = (node->ins_type != INS_DIRECT)
- ? UT_LIST_GET_NEXT(tuple_list, node->entry)
- : NULL;
+ node->entry = UT_LIST_GET_NEXT(tuple_list, node->entry);
/* Skip corrupted secondary index and its entry */
while (node->index && dict_index_is_corrupted(node->index)) {
node->index = dict_table_get_next_index(node->index);
- node->entry = (node->ins_type != INS_DIRECT)
- ? UT_LIST_GET_NEXT(tuple_list, node->entry)
- : NULL;
+ node->entry = UT_LIST_GET_NEXT(tuple_list, node->entry);
}
}
=== modified file 'storage/innobase/row/row0mysql.cc'
--- a/storage/innobase/row/row0mysql.cc 2012-05-18 11:21:55 +0000
+++ b/storage/innobase/row/row0mysql.cc 2012-05-31 01:16:59 +0000
@@ -957,44 +957,60 @@ row_get_prebuilt_insert_row(
row_prebuilt_t* prebuilt) /*!< in: prebuilt struct in MySQL
handle */
{
- ins_node_t* node;
- dtuple_t* row;
- dict_table_t* table = prebuilt->table;
+ dict_table_t* table = prebuilt->table;
+ const dict_index_t* last_index = dict_table_get_last_index(table);
ut_ad(prebuilt && table && prebuilt->trx);
- if (prebuilt->ins_node == NULL) {
+ /* Check if a new index has been added that prebuilt doesn't know
+ about. We need to rebuild the query graph. */
- /* Not called before for this handle: create an insert node
- and query graph to the prebuilt struct */
+ if (prebuilt->ins_node != 0) {
- node = ins_node_create(INS_DIRECT, table, prebuilt->heap);
+ if (prebuilt->trx_id >= last_index->trx_id) {
+ return(prebuilt->ins_node->row);
+ }
- prebuilt->ins_node = node;
+ que_graph_free_recursive(prebuilt->ins_graph);
- if (prebuilt->ins_upd_rec_buff == NULL) {
- prebuilt->ins_upd_rec_buff = static_cast<byte*>(
- mem_heap_alloc(
- prebuilt->heap,
- prebuilt->mysql_row_len));
- }
+ prebuilt->ins_graph = 0;
+ }
- row = dtuple_create(prebuilt->heap,
- dict_table_get_n_cols(table));
+ /* Create an insert node and query graph to the prebuilt struct */
- dict_table_copy_types(row, table);
+ ins_node_t* node;
- ins_node_set_new_row(node, row);
+ node = ins_node_create(INS_DIRECT, table, prebuilt->heap);
- prebuilt->ins_graph = static_cast<que_fork_t*>(
- que_node_get_parent(
- pars_complete_graph_for_exec(
- node,
- prebuilt->trx, prebuilt->heap)));
+ prebuilt->ins_node = node;
- prebuilt->ins_graph->state = QUE_FORK_ACTIVE;
+ if (prebuilt->ins_upd_rec_buff == 0) {
+ prebuilt->ins_upd_rec_buff = static_cast<byte*>(
+ mem_heap_alloc(
+ prebuilt->heap,
+ prebuilt->mysql_row_len));
}
+ dtuple_t* row;
+
+ row = dtuple_create(prebuilt->heap, dict_table_get_n_cols(table));
+
+ dict_table_copy_types(row, table);
+
+ ins_node_set_new_row(node, row);
+
+ prebuilt->ins_graph = static_cast<que_fork_t*>(
+ que_node_get_parent(
+ pars_complete_graph_for_exec(
+ node,
+ prebuilt->trx, prebuilt->heap)));
+
+ prebuilt->ins_graph->state = QUE_FORK_ACTIVE;
+
+ ut_ad(prebuilt->trx_id == 0 || prebuilt->trx_id <= last_index->trx_id);
+
+ prebuilt->trx_id = last_index->trx_id;
+
return(prebuilt->ins_node->row);
}
@@ -1073,10 +1089,8 @@ row_lock_table_autoinc_for_mysql(
trx->op_info = "setting auto-inc lock";
- if (node == NULL) {
- row_get_prebuilt_insert_row(prebuilt);
- node = prebuilt->ins_node;
- }
+ row_get_prebuilt_insert_row(prebuilt);
+ node = prebuilt->ins_node;
/* We use the insert query graph as the dummy graph needed
in the lock module call */
@@ -1266,10 +1280,8 @@ row_insert_for_mysql(
trx_start_if_not_started_xa(trx);
- if (node == NULL) {
- row_get_prebuilt_insert_row(prebuilt);
- node = prebuilt->ins_node;
- }
+ row_get_prebuilt_insert_row(prebuilt);
+ node = prebuilt->ins_node;
row_mysql_convert_row_to_innobase(node->row, prebuilt, mysql_rec);
=== modified file 'storage/perfschema/pfs_autosize.cc'
--- a/storage/perfschema/pfs_autosize.cc 2012-05-30 11:44:42 +0000
+++ b/storage/perfschema/pfs_autosize.cc 2012-05-31 11:14:10 +0000
@@ -56,7 +56,6 @@ static const ulong thread_per_share= 0;
struct PFS_sizing_data
{
- const char* m_name;
/** Default value for @c PFS_param.m_account_sizing. */
ulong m_account_sizing;
/** Default value for @c PFS_param.m_user_sizing. */
@@ -117,9 +116,8 @@ struct PFS_sizing_data
float m_load_factor_static;
};
-PFS_sizing_data tiny_data=
+PFS_sizing_data small_data=
{
- "HEURISTIC 1",
/* Account / user / host */
10, 5, 20,
/* History sizes */
@@ -134,7 +132,6 @@ PFS_sizing_data tiny_data=
PFS_sizing_data medium_data=
{
- "HEURISTIC 2",
/* Account / user / host */
100, 100, 100,
/* History sizes */
@@ -147,9 +144,8 @@ PFS_sizing_data medium_data=
0.70, 0.80, 0.90
};
-PFS_sizing_data big_data=
+PFS_sizing_data large_data=
{
- "HEURISTIC 3",
/* Account / user / host */
100, 100, 100,
/* History sizes */
@@ -197,7 +193,7 @@ PFS_sizing_data *estimate_hints(PFS_glob
(param->m_hints.m_table_open_cache <= TABLE_OPEN_CACHE_DEFAULT))
{
/* The my.cnf used is either unchanged, or lower than factory defaults. */
- return & tiny_data;
+ return & small_data;
}
if ((param->m_hints.m_max_connections <= MAX_CONNECTIONS_DEFAULT * 2) &&
@@ -209,7 +205,7 @@ PFS_sizing_data *estimate_hints(PFS_glob
}
/* Looks like a server in production. */
- return & big_data;
+ return & large_data;
}
static void apply_heuristic(PFS_global_param *p, PFS_sizing_data *h)
No bundle (reason: useless for push emails).
| Thread |
|---|
| • bzr push into mysql-trunk-wl6135 branch (marc.alff:3795 to 3797) WL#6135 | Marc Alff | 31 May |