diff options
author | Nayuta Yanagisawa <nayuta.yanagisawa@hey.com> | 2022-06-23 02:17:24 +0900 |
---|---|---|
committer | Nayuta Yanagisawa <nayuta.yanagisawa@hey.com> | 2022-06-23 03:10:41 +0900 |
commit | a32f8e47b72bc9759a1621208737bb1c55302681 (patch) | |
tree | a787743e66ad8f2267140d434a125e4cbadfbfe5 | |
parent | af929146ed5d10f7cafe1091346e50a873eed3f1 (diff) | |
download | mariadb-git-bb-10.4-MDEV-19190-nayuta.tar.gz |
MDEV-19190 Assertion `part_share->auto_inc_initialized' failed in ha_partition::get_auto_incrementbb-10.4-MDEV-19190-nayuta
-rw-r--r-- | mysql-test/suite/parts/r/system_versioning_alter_delete.result | 14 | ||||
-rw-r--r-- | mysql-test/suite/parts/t/system_versioning_alter_delete.test | 11 | ||||
-rw-r--r-- | sql/ha_partition.cc | 6 | ||||
-rw-r--r-- | sql/table.cc | 6 |
4 files changed, 35 insertions, 2 deletions
diff --git a/mysql-test/suite/parts/r/system_versioning_alter_delete.result b/mysql-test/suite/parts/r/system_versioning_alter_delete.result new file mode 100644 index 00000000000..b7690b91337 --- /dev/null +++ b/mysql-test/suite/parts/r/system_versioning_alter_delete.result @@ -0,0 +1,14 @@ +# +# MDEV-19190 Assertion `part_share->auto_inc_initialized' failed in ha_partition::get_auto_increment +# +CREATE TABLE t1 (f INT, s DATE, e DATE, PERIOD FOR app(s,e)) PARTITION BY KEY(f); +INSERT INTO t1 (s,e) VALUES ('2023-07-21','2024-06-07'); +ALTER TABLE t1 MODIFY f INT AUTO_INCREMENT KEY; +SELECT * FROM t1; +f s e +1 2023-07-21 2024-06-07 +DELETE FROM t1 FOR PORTION OF app FROM '2023-07-20' TO '2024-05-23'; +SELECT * FROM t1; +f s e +2 2024-05-23 2024-06-07 +DROP TABLE t1; diff --git a/mysql-test/suite/parts/t/system_versioning_alter_delete.test b/mysql-test/suite/parts/t/system_versioning_alter_delete.test new file mode 100644 index 00000000000..8ff0144610a --- /dev/null +++ b/mysql-test/suite/parts/t/system_versioning_alter_delete.test @@ -0,0 +1,11 @@ +--source include/have_partition.inc +--echo # +--echo # MDEV-19190 Assertion `part_share->auto_inc_initialized' failed in ha_partition::get_auto_increment +--echo # +CREATE TABLE t1 (f INT, s DATE, e DATE, PERIOD FOR app(s,e)) PARTITION BY KEY(f); +INSERT INTO t1 (s,e) VALUES ('2023-07-21','2024-06-07'); +ALTER TABLE t1 MODIFY f INT AUTO_INCREMENT KEY; +SELECT * FROM t1; +DELETE FROM t1 FOR PORTION OF app FROM '2023-07-20' TO '2024-05-23'; +SELECT * FROM t1; +DROP TABLE t1; diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index bf430a00f18..1e31ce0c8bf 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -10614,8 +10614,7 @@ int ha_partition::cmp_ref(const uchar *ref1, const uchar *ref2) void ha_partition::update_next_auto_inc_val() { - if (!part_share->auto_inc_initialized || - need_info_for_auto_inc()) + if (need_info_for_auto_inc()) info(HA_STATUS_AUTO); } @@ -10636,6 +10635,9 @@ bool ha_partition::need_info_for_auto_inc() handler **file= m_file; DBUG_ENTER("ha_partition::need_info_for_auto_inc"); + if (!part_share->auto_inc_initialized) + DBUG_RETURN(TRUE); + do { if ((*file)->need_info_for_auto_inc()) diff --git a/sql/table.cc b/sql/table.cc index 00b498fdd77..183e5b9c698 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -8649,7 +8649,13 @@ int TABLE::update_generated_fields() next_number_field= found_next_number_field; res= found_next_number_field->set_default(); if (likely(!res)) + { + if (file->need_info_for_auto_inc()) + { + file->info(HA_STATUS_AUTO); + } res= file->update_auto_increment(); + } } if (likely(!res) && vfield) |