summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRucha Deodhar <rucha.deodhar@mariadb.com>2020-07-28 13:43:25 +0530
committerRucha Deodhar <rucha.deodhar@mariadb.com>2020-07-28 14:12:59 +0530
commit6542511572e91ed3077e91bf9a3b6c40cf5ede51 (patch)
tree4679a8b7aa9279b5d138d8319801b0835760291d
parent4968fdbcef1c2d62ed525dffac153cf9f8eb1913 (diff)
downloadmariadb-git-bb-10.4-MDEV-21017.tar.gz
MDEV-21017: Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())'bb-10.4-MDEV-21017
failed or late ER_PERIOD_FIELD_WRONG_ATTRIBUTES upon attempt to create existing table Analysis: Error state is not stored when field is checked in Table_period_info::check_field() Fix: Store error state by setting res to true.
-rw-r--r--mysql-test/main/create.result15
-rw-r--r--mysql-test/main/create.test18
-rw-r--r--sql/handler.cc1
3 files changed, 34 insertions, 0 deletions
diff --git a/mysql-test/main/create.result b/mysql-test/main/create.result
index c1733c270a7..2905103b707 100644
--- a/mysql-test/main/create.result
+++ b/mysql-test/main/create.result
@@ -2012,3 +2012,18 @@ CREATE TABLE t1 ( id1 INT, id2 INT, CONSTRAINT `foo` PRIMARY KEY (id1), CONSTRAI
Warnings:
Warning 1280 Name 'foo' ignored for PRIMARY key.
DROP TABLE t1;
+#
+# 10.4 Test
+#
+# MDEV-21017: Assertion `!is_set() || (m_status == DA_OK_BULK &&
+# is_bulk_op())' failed or late ER_PERIOD_FIELD_WRONG_ATTRIBUTES
+# upon attempt to create existing table
+#
+CREATE TABLE t1 (a INT);
+LOCK TABLE t1 WRITE;
+CREATE TABLE IF NOT EXISTS t1 (s DATE GENERATED ALWAYS AS ('2000-01-01') STORED,
+e DATE, PERIOD FOR app(s,e));
+ERROR HY000: Period field `s` cannot be GENERATED ALWAYS AS
+UNLOCK TABLES;
+DROP TABLE t1;
+# End of 10.4 Test
diff --git a/mysql-test/main/create.test b/mysql-test/main/create.test
index 64aea4ddcf1..a6a6ba0c782 100644
--- a/mysql-test/main/create.test
+++ b/mysql-test/main/create.test
@@ -1873,3 +1873,21 @@ drop table t1;
CREATE TABLE t1 ( id1 INT, id2 INT, CONSTRAINT `foo` PRIMARY KEY (id1), CONSTRAINT `bar` UNIQUE KEY(id2));
DROP TABLE t1;
+--echo #
+--echo # 10.4 Test
+--echo #
+--echo # MDEV-21017: Assertion `!is_set() || (m_status == DA_OK_BULK &&
+--echo # is_bulk_op())' failed or late ER_PERIOD_FIELD_WRONG_ATTRIBUTES
+--echo # upon attempt to create existing table
+--echo #
+CREATE TABLE t1 (a INT);
+LOCK TABLE t1 WRITE;
+
+--error ER_PERIOD_FIELD_WRONG_ATTRIBUTES
+CREATE TABLE IF NOT EXISTS t1 (s DATE GENERATED ALWAYS AS ('2000-01-01') STORED,
+e DATE, PERIOD FOR app(s,e));
+
+UNLOCK TABLES;
+DROP TABLE t1;
+
+--echo # End of 10.4 Test
diff --git a/sql/handler.cc b/sql/handler.cc
index 5f94f9e893b..21922ec9d73 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -7856,6 +7856,7 @@ bool Table_period_info::check_field(const Create_field* f,
{
my_error(ER_PERIOD_FIELD_WRONG_ATTRIBUTES, MYF(0),
f->field_name.str, "GENERATED ALWAYS AS");
+ res= true;
}
return res;