summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2014-11-21 20:20:39 +0100
committerSergei Golubchik <sergii@pisem.net>2014-11-21 20:20:39 +0100
commitffc0ef63164e9a121d8a02323afe32a82299171e (patch)
treed9f882c0651f6e53ded3f606ff9b9c86bc7c9dd5
parent67e2e14627731082ea9c31392f34fc920aef86df (diff)
parent8ff66501ca976bbac7854d0f45fc543cc5933f7b (diff)
downloadmariadb-git-ffc0ef63164e9a121d8a02323afe32a82299171e.tar.gz
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_stats_traditional_basic.result14
-rw-r--r--storage/innobase/handler/ha_innodb.cc4
-rw-r--r--storage/innobase/srv/srv0srv.cc4
-rw-r--r--storage/innobase/sync/sync0sync.cc5
-rw-r--r--storage/xtradb/handler/ha_innodb.cc4
-rw-r--r--storage/xtradb/srv/srv0srv.cc4
-rw-r--r--storage/xtradb/sync/sync0sync.cc5
7 files changed, 25 insertions, 15 deletions
diff --git a/mysql-test/suite/sys_vars/r/innodb_stats_traditional_basic.result b/mysql-test/suite/sys_vars/r/innodb_stats_traditional_basic.result
index 754a8dfd980..00ee2877e58 100644
--- a/mysql-test/suite/sys_vars/r/innodb_stats_traditional_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_stats_traditional_basic.result
@@ -1,28 +1,28 @@
SET @start_global_value = @@global.innodb_stats_traditional;
SELECT @start_global_value;
@start_global_value
-0
+1
Valid values are 'ON' and 'OFF'
select @@global.innodb_stats_traditional in (0, 1);
@@global.innodb_stats_traditional in (0, 1)
1
select @@global.innodb_stats_traditional;
@@global.innodb_stats_traditional
-0
+1
select @@session.innodb_stats_traditional;
ERROR HY000: Variable 'innodb_stats_traditional' is a GLOBAL variable
show global variables like 'innodb_stats_traditional';
Variable_name Value
-innodb_stats_traditional OFF
+innodb_stats_traditional ON
show session variables like 'innodb_stats_traditional';
Variable_name Value
-innodb_stats_traditional OFF
+innodb_stats_traditional ON
select * from information_schema.global_variables where variable_name='innodb_stats_traditional';
VARIABLE_NAME VARIABLE_VALUE
-INNODB_STATS_TRADITIONAL OFF
+INNODB_STATS_TRADITIONAL ON
select * from information_schema.session_variables where variable_name='innodb_stats_traditional';
VARIABLE_NAME VARIABLE_VALUE
-INNODB_STATS_TRADITIONAL OFF
+INNODB_STATS_TRADITIONAL ON
set global innodb_stats_traditional='OFF';
select @@global.innodb_stats_traditional;
@@global.innodb_stats_traditional
@@ -89,4 +89,4 @@ ERROR 42000: Variable 'innodb_stats_traditional' can't be set to the value of 'A
SET @@global.innodb_stats_traditional = @start_global_value;
SELECT @@global.innodb_stats_traditional;
@@global.innodb_stats_traditional
-0
+1
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index b7b163b5bd7..3c52a35b2b4 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -16364,8 +16364,8 @@ static MYSQL_SYSVAR_ULONGLONG(stats_modified_counter, srv_stats_modified_counter
static MYSQL_SYSVAR_BOOL(stats_traditional, srv_stats_sample_traditional,
PLUGIN_VAR_RQCMDARG,
- "Enable traditional statistic calculation based on number of configured pages (default false)",
- NULL, NULL, FALSE);
+ "Enable traditional statistic calculation based on number of configured pages (default true)",
+ NULL, NULL, TRUE);
static MYSQL_SYSVAR_BOOL(adaptive_hash_index, btr_search_enabled,
PLUGIN_VAR_OPCMDARG,
diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc
index f8a6bc5d276..14b2bdbe03c 100644
--- a/storage/innobase/srv/srv0srv.cc
+++ b/storage/innobase/srv/srv0srv.cc
@@ -345,8 +345,8 @@ UNIV_INTERN my_bool srv_stats_auto_recalc = TRUE;
UNIV_INTERN unsigned long long srv_stats_modified_counter = 0;
/* Enable traditional statistic calculation based on number of configured
-pages default false. */
-UNIV_INTERN my_bool srv_stats_sample_traditional = FALSE;
+pages default true. */
+UNIV_INTERN my_bool srv_stats_sample_traditional = TRUE;
UNIV_INTERN ibool srv_use_doublewrite_buf = TRUE;
diff --git a/storage/innobase/sync/sync0sync.cc b/storage/innobase/sync/sync0sync.cc
index 2729bc39228..fb559f26bd4 100644
--- a/storage/innobase/sync/sync0sync.cc
+++ b/storage/innobase/sync/sync0sync.cc
@@ -551,6 +551,11 @@ spin_loop:
mutex_set_waiters(mutex, 1);
+ /* Make sure waiters store won't pass over mutex_test_and_set */
+#ifdef __powerpc__
+ os_mb;
+#endif
+
/* Try to reserve still a few times */
for (i = 0; i < 4; i++) {
if (ib_mutex_test_and_set(mutex) == 0) {
diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc
index 01c9e4ecdb7..bed8914f6e6 100644
--- a/storage/xtradb/handler/ha_innodb.cc
+++ b/storage/xtradb/handler/ha_innodb.cc
@@ -17462,8 +17462,8 @@ static MYSQL_SYSVAR_ULONGLONG(stats_modified_counter, srv_stats_modified_counter
static MYSQL_SYSVAR_BOOL(stats_traditional, srv_stats_sample_traditional,
PLUGIN_VAR_RQCMDARG,
- "Enable traditional statistic calculation based on number of configured pages (default false)",
- NULL, NULL, FALSE);
+ "Enable traditional statistic calculation based on number of configured pages (default true)",
+ NULL, NULL, TRUE);
static MYSQL_SYSVAR_BOOL(adaptive_hash_index, btr_search_enabled,
PLUGIN_VAR_OPCMDARG,
diff --git a/storage/xtradb/srv/srv0srv.cc b/storage/xtradb/srv/srv0srv.cc
index a3ec19b223b..11a217f865c 100644
--- a/storage/xtradb/srv/srv0srv.cc
+++ b/storage/xtradb/srv/srv0srv.cc
@@ -462,8 +462,8 @@ UNIV_INTERN my_bool srv_stats_auto_recalc = TRUE;
UNIV_INTERN unsigned long long srv_stats_modified_counter = 0;
/* Enable traditional statistic calculation based on number of configured
-pages default false. */
-UNIV_INTERN my_bool srv_stats_sample_traditional = FALSE;
+pages default true. */
+UNIV_INTERN my_bool srv_stats_sample_traditional = TRUE;
UNIV_INTERN ibool srv_use_doublewrite_buf = TRUE;
UNIV_INTERN ibool srv_use_atomic_writes = FALSE;
diff --git a/storage/xtradb/sync/sync0sync.cc b/storage/xtradb/sync/sync0sync.cc
index ca630531086..d02a0df70ca 100644
--- a/storage/xtradb/sync/sync0sync.cc
+++ b/storage/xtradb/sync/sync0sync.cc
@@ -649,6 +649,11 @@ spin_loop:
mutex_set_waiters(mutex, 1);
}
+ /* Make sure waiters store won't pass over mutex_test_and_set */
+#ifdef __powerpc__
+ os_mb;
+#endif
+
/* Try to reserve still a few times */
for (i = 0; i < 4; i++) {
if (ib_mutex_test_and_set(mutex) == 0) {