summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNayuta Yanagisawa <nayuta.yanagisawa@hey.com>2022-06-23 02:17:24 +0900
committerNayuta Yanagisawa <nayuta.yanagisawa@hey.com>2022-06-23 03:10:41 +0900
commita32f8e47b72bc9759a1621208737bb1c55302681 (patch)
treea787743e66ad8f2267140d434a125e4cbadfbfe5
parentaf929146ed5d10f7cafe1091346e50a873eed3f1 (diff)
downloadmariadb-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.result14
-rw-r--r--mysql-test/suite/parts/t/system_versioning_alter_delete.test11
-rw-r--r--sql/ha_partition.cc6
-rw-r--r--sql/table.cc6
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)