summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Midenkov <midenok@gmail.com>2017-11-14 15:47:01 +0300
committerAleksey Midenkov <midenok@gmail.com>2017-11-17 14:28:45 +0300
commita4439fef961ec97509aab5642070068f87ea8c33 (patch)
treefd3daf12a6e6bcde215a47d0884eea6061995f60
parentecf259cacf46826e5eb8be0c1649d86b3df559ae (diff)
downloadmariadb-git-a4439fef961ec97509aab5642070068f87ea8c33.tar.gz
SQL: don't update TRT when altered [#305, #302]
Tests affected: main.mysqlcheck
-rw-r--r--mysql-test/r/mysqlcheck.result9
-rw-r--r--sql/sql_table.cc2
-rw-r--r--sql/table.h22
3 files changed, 27 insertions, 6 deletions
diff --git a/mysql-test/r/mysqlcheck.result b/mysql-test/r/mysqlcheck.result
index a2967bd5e5b..d1785626fc5 100644
--- a/mysql-test/r/mysqlcheck.result
+++ b/mysql-test/r/mysqlcheck.result
@@ -31,6 +31,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
mysql.vtmd_template OK
mtr.global_suppressions Table is already up to date
@@ -66,6 +67,9 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry
+note : Table does not support optimize, doing recreate + analyze instead
+status : OK
mysql.user OK
mysql.vtmd_template
note : Table does not support optimize, doing recreate + analyze instead
@@ -97,6 +101,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
mysql.vtmd_template OK
mysql.column_stats Table is already up to date
@@ -130,6 +135,9 @@ mysql.time_zone_leap_second Table is already up to date
mysql.time_zone_name Table is already up to date
mysql.time_zone_transition Table is already up to date
mysql.time_zone_transition_type Table is already up to date
+mysql.transaction_registry
+note : Table does not support optimize, doing recreate + analyze instead
+status : OK
mysql.user Table is already up to date
mysql.vtmd_template
note : Table does not support optimize, doing recreate + analyze instead
@@ -455,6 +463,7 @@ mysql.time_zone_leap_second Table is already up to date
mysql.time_zone_name Table is already up to date
mysql.time_zone_transition Table is already up to date
mysql.time_zone_transition_type Table is already up to date
+mysql.transaction_registry OK
mysql.user Table is already up to date
mysql.vtmd_template OK
mysqltest1.t1
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 30071743371..e96426f4e69 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -7430,7 +7430,7 @@ static bool mysql_inplace_alter_table(THD *thd,
{
TR_table trt(thd, true);
- if (table->file->native_versioned())
+ if (table->file->native_versioned() && trt != *table_list)
{
if (opt_transaction_registry && trt.update())
return true;
diff --git a/sql/table.h b/sql/table.h
index a7cd29c1bd3..9b8f345c03f 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -2961,6 +2961,15 @@ public:
ulonglong commit_id1= 0, enum_tx_isolation iso_level1= ISO_READ_UNCOMMITTED,
ulonglong commit_id0= 0);
+ enum_tx_isolation iso_level() const;
+ void store_iso_level(enum_tx_isolation iso_level)
+ {
+ DBUG_ASSERT(iso_level <= ISO_SERIALIZABLE);
+ store(FLD_ISO_LEVEL, iso_level + 1);
+ }
+ bool check();
+
+public:
TABLE * operator-> () const
{
return table;
@@ -2974,13 +2983,16 @@ public:
{
return table;
}
- enum_tx_isolation iso_level() const;
- void store_iso_level(enum_tx_isolation iso_level)
+ bool operator== (TABLE_LIST &subj) const
{
- DBUG_ASSERT(iso_level <= ISO_SERIALIZABLE);
- store(FLD_ISO_LEVEL, iso_level + 1);
+ if (0 != strcmp(db, subj.db))
+ return false;
+ return (0 == strcmp(table_name, subj.table_name));
+ }
+ bool operator!= (TABLE_LIST &subj) const
+ {
+ return !(*this == subj);
}
- bool check();
};
#endif /* MYSQL_CLIENT */