mirror of
https://github.com/postgres/postgres.git
synced 2025-12-19 17:02:53 +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)
|
if (attribute->attgenerated == ATTRIBUTE_GENERATED_STORED)
|
||||||
{
|
{
|
||||||
newval = (NewColumnValue *) palloc0(sizeof(NewColumnValue));
|
newval = palloc0_object(NewColumnValue);
|
||||||
newval->attnum = num;
|
newval->attnum = num;
|
||||||
newval->expr = expression_planner((Expr *) def);
|
newval->expr = expression_planner((Expr *) def);
|
||||||
newval->is_generated = (attribute->attgenerated != '\0');
|
newval->is_generated = (attribute->attgenerated != '\0');
|
||||||
@@ -22406,7 +22406,7 @@ createTableConstraints(List **wqueue, AlteredTableInfo *tab,
|
|||||||
{
|
{
|
||||||
NewConstraint *newcon;
|
NewConstraint *newcon;
|
||||||
|
|
||||||
newcon = (NewConstraint *) palloc0(sizeof(NewConstraint));
|
newcon = palloc0_object(NewConstraint);
|
||||||
newcon->name = ccon->name;
|
newcon->name = ccon->name;
|
||||||
newcon->contype = CONSTR_CHECK;
|
newcon->contype = CONSTR_CHECK;
|
||||||
newcon->qual = qual;
|
newcon->qual = qual;
|
||||||
@@ -22944,7 +22944,7 @@ createSplitPartitionContext(Relation partRel)
|
|||||||
{
|
{
|
||||||
SplitPartitionContext *pc;
|
SplitPartitionContext *pc;
|
||||||
|
|
||||||
pc = (SplitPartitionContext *) palloc0(sizeof(SplitPartitionContext));
|
pc = palloc0_object(SplitPartitionContext);
|
||||||
pc->partRel = partRel;
|
pc->partRel = partRel;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -5115,8 +5115,7 @@ calculate_partition_bound_for_merge(Relation parent,
|
|||||||
int nparts = list_length(partOids);
|
int nparts = list_length(partOids);
|
||||||
List *bounds = NIL;
|
List *bounds = NIL;
|
||||||
|
|
||||||
lower_bounds = (PartitionRangeBound **)
|
lower_bounds = palloc0_array(PartitionRangeBound *, nparts);
|
||||||
palloc0(nparts * sizeof(PartitionRangeBound *));
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create an array of lower bounds and a list of
|
* 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
|
* Make an array new_parts with new partitions except the DEFAULT
|
||||||
* partition.
|
* partition.
|
||||||
*/
|
*/
|
||||||
new_parts = (SinglePartitionSpec **)
|
new_parts = palloc0_array(SinglePartitionSpec *, list_length(partlist));
|
||||||
palloc0(list_length(partlist) * sizeof(SinglePartitionSpec *));
|
|
||||||
|
|
||||||
/* isSplitPartDefault flag: is split partition a DEFAULT partition? */
|
/* isSplitPartDefault flag: is split partition a DEFAULT partition? */
|
||||||
isSplitPartDefault = (defaultPartOid == splitPartOid);
|
isSplitPartDefault = (defaultPartOid == splitPartOid);
|
||||||
@@ -5786,8 +5784,7 @@ check_partitions_for_split(Relation parent,
|
|||||||
* all partitions in ascending order of their bounds (we compare the
|
* all partitions in ascending order of their bounds (we compare the
|
||||||
* lower bound only).
|
* lower bound only).
|
||||||
*/
|
*/
|
||||||
lower_bounds = (PartitionRangeBound **)
|
lower_bounds = palloc0_array(PartitionRangeBound *, nparts);
|
||||||
palloc0(nparts * sizeof(PartitionRangeBound *));
|
|
||||||
|
|
||||||
/* Create an array of lower bounds. */
|
/* Create an array of lower bounds. */
|
||||||
for (i = 0; i < nparts; i++)
|
for (i = 0; i < nparts; i++)
|
||||||
@@ -5802,8 +5799,7 @@ check_partitions_for_split(Relation parent,
|
|||||||
|
|
||||||
/* Reorder the array of partitions. */
|
/* Reorder the array of partitions. */
|
||||||
tmp_new_parts = new_parts;
|
tmp_new_parts = new_parts;
|
||||||
new_parts = (SinglePartitionSpec **)
|
new_parts = palloc0_array(SinglePartitionSpec *, nparts);
|
||||||
palloc0(nparts * sizeof(SinglePartitionSpec *));
|
|
||||||
for (i = 0; i < nparts; i++)
|
for (i = 0; i < nparts; i++)
|
||||||
new_parts[i] = tmp_new_parts[lower_bounds[i]->index];
|
new_parts[i] = tmp_new_parts[lower_bounds[i]->index];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user