summaryrefslogtreecommitdiff
path: root/sql/partition_info.cc
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2022-01-27 08:45:36 +0100
committerOleksandr Byelkin <sanja@mariadb.com>2022-01-27 08:45:36 +0100
commit9b4a179d69a1c795bef303a88f9d3195669f00ec (patch)
tree87811d81af231e2945468ead0cba58cfc5514548 /sql/partition_info.cc
parent020dc54dabe64f238e8ef4f50a630a22e0f06949 (diff)
parent7db489fc7dea2b4c236807035e57f169074c6682 (diff)
downloadmariadb-git-10.3-merge.tar.gz
Merge branch '10.2' into bb-10.3-release10.3-merge
Diffstat (limited to 'sql/partition_info.cc')
-rw-r--r--sql/partition_info.cc15
1 files changed, 8 insertions, 7 deletions
diff --git a/sql/partition_info.cc b/sql/partition_info.cc
index 163fb9c214d..edcdd6d2b37 100644
--- a/sql/partition_info.cc
+++ b/sql/partition_info.cc
@@ -40,7 +40,7 @@
#include "ha_partition.h"
-partition_info *partition_info::get_clone(THD *thd)
+partition_info *partition_info::get_clone(THD *thd, bool empty_data_and_index_file)
{
MEM_ROOT *mem_root= thd->mem_root;
DBUG_ENTER("partition_info::get_clone");
@@ -60,21 +60,22 @@ partition_info *partition_info::get_clone(THD *thd)
{
List_iterator<partition_element> subpart_it(part->subpartitions);
partition_element *subpart;
- partition_element *part_clone= new (mem_root) partition_element();
+ partition_element *part_clone= new (mem_root) partition_element(*part);
if (!part_clone)
DBUG_RETURN(NULL);
-
- *part_clone= *part;
part_clone->subpartitions.empty();
while ((subpart= (subpart_it++)))
{
- partition_element *subpart_clone= new (mem_root) partition_element();
+ partition_element *subpart_clone= new (mem_root) partition_element(*subpart);
if (!subpart_clone)
DBUG_RETURN(NULL);
-
- *subpart_clone= *subpart;
+ if (empty_data_and_index_file)
+ subpart_clone->data_file_name= subpart_clone->index_file_name= NULL;
part_clone->subpartitions.push_back(subpart_clone, mem_root);
}
+
+ if (empty_data_and_index_file)
+ part_clone->data_file_name= part_clone->index_file_name= NULL;
clone->partitions.push_back(part_clone, mem_root);
part_clone->list_val_list.empty();
List_iterator<part_elem_value> list_val_it(part->list_val_list);