mirror of
https://github.com/postgres/postgres.git
synced 2025-12-18 05:01:01 +03:00
Fix usage of palloc() in MERGE/SPLIT PARTITION(s) code
f2e4cc4279and4b3d173629implement ALTER TABLE ... MERGE/SPLIT PARTITION(s) commands. In several places, these commits use palloc(), where we should use palloc_object() and palloc_array(). This commit provides appropriate usage of palloc_object() and palloc_array(). Reported-by: Man Zeng <zengman@halodbtech.com> Discussion: https://postgr.es/m/tencent_3661BB522D5466B33EA33666%40qq.com
This commit is contained in:
@@ -22317,7 +22317,7 @@ createTableConstraints(List **wqueue, AlteredTableInfo *tab,
|
||||
*/
|
||||
if (attribute->attgenerated == ATTRIBUTE_GENERATED_STORED)
|
||||
{
|
||||
newval = (NewColumnValue *) palloc0(sizeof(NewColumnValue));
|
||||
newval = palloc0_object(NewColumnValue);
|
||||
newval->attnum = num;
|
||||
newval->expr = expression_planner((Expr *) def);
|
||||
newval->is_generated = (attribute->attgenerated != '\0');
|
||||
@@ -22406,7 +22406,7 @@ createTableConstraints(List **wqueue, AlteredTableInfo *tab,
|
||||
{
|
||||
NewConstraint *newcon;
|
||||
|
||||
newcon = (NewConstraint *) palloc0(sizeof(NewConstraint));
|
||||
newcon = palloc0_object(NewConstraint);
|
||||
newcon->name = ccon->name;
|
||||
newcon->contype = CONSTR_CHECK;
|
||||
newcon->qual = qual;
|
||||
@@ -22944,7 +22944,7 @@ createSplitPartitionContext(Relation partRel)
|
||||
{
|
||||
SplitPartitionContext *pc;
|
||||
|
||||
pc = (SplitPartitionContext *) palloc0(sizeof(SplitPartitionContext));
|
||||
pc = palloc0_object(SplitPartitionContext);
|
||||
pc->partRel = partRel;
|
||||
|
||||
/*
|
||||
|
||||
@@ -5115,8 +5115,7 @@ calculate_partition_bound_for_merge(Relation parent,
|
||||
int nparts = list_length(partOids);
|
||||
List *bounds = NIL;
|
||||
|
||||
lower_bounds = (PartitionRangeBound **)
|
||||
palloc0(nparts * sizeof(PartitionRangeBound *));
|
||||
lower_bounds = palloc0_array(PartitionRangeBound *, nparts);
|
||||
|
||||
/*
|
||||
* Create an array of lower bounds and a list of
|
||||
@@ -5755,8 +5754,7 @@ check_partitions_for_split(Relation parent,
|
||||
* Make an array new_parts with new partitions except the DEFAULT
|
||||
* partition.
|
||||
*/
|
||||
new_parts = (SinglePartitionSpec **)
|
||||
palloc0(list_length(partlist) * sizeof(SinglePartitionSpec *));
|
||||
new_parts = palloc0_array(SinglePartitionSpec *, list_length(partlist));
|
||||
|
||||
/* isSplitPartDefault flag: is split partition a DEFAULT partition? */
|
||||
isSplitPartDefault = (defaultPartOid == splitPartOid);
|
||||
@@ -5786,8 +5784,7 @@ check_partitions_for_split(Relation parent,
|
||||
* all partitions in ascending order of their bounds (we compare the
|
||||
* lower bound only).
|
||||
*/
|
||||
lower_bounds = (PartitionRangeBound **)
|
||||
palloc0(nparts * sizeof(PartitionRangeBound *));
|
||||
lower_bounds = palloc0_array(PartitionRangeBound *, nparts);
|
||||
|
||||
/* Create an array of lower bounds. */
|
||||
for (i = 0; i < nparts; i++)
|
||||
@@ -5802,8 +5799,7 @@ check_partitions_for_split(Relation parent,
|
||||
|
||||
/* Reorder the array of partitions. */
|
||||
tmp_new_parts = new_parts;
|
||||
new_parts = (SinglePartitionSpec **)
|
||||
palloc0(nparts * sizeof(SinglePartitionSpec *));
|
||||
new_parts = palloc0_array(SinglePartitionSpec *, nparts);
|
||||
for (i = 0; i < nparts; i++)
|
||||
new_parts[i] = tmp_new_parts[lower_bounds[i]->index];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user