Thread

  1. [PATCH v2 1/3] Don't cast away const where possible

    Bertrand Drouvot <bertranddrouvot.pg@gmail.com> — 2025-12-18T09:51:01Z

    Add const to read only local variables, preserving the const qualifiers from the
    function signatures.
    
    This does not change all such instances, but only those hand-picked by the author.
    
    The ones that are not changed:
    
    - are just thin wrappers
    - would require public API changes
    - rely on external functions (such as LZ4F_compressUpdate())
    - would require complex subsystem changes
    
    Discussion: https://postgr.es/m/aUQHy/MmWq7c97wK%40ip-10-97-1-34.eu-west-3.compute.internal
    ---
     src/backend/access/brin/brin_minmax_multi.c          | 4 ++--
     src/backend/access/heap/pruneheap.c                  | 4 ++--
     src/backend/access/spgist/spgkdtreeproc.c            | 8 ++++----
     src/backend/statistics/mcv.c                         | 4 ++--
     src/backend/tsearch/spell.c                          | 4 ++--
     src/test/modules/injection_points/injection_points.c | 8 ++++----
     6 files changed, 16 insertions(+), 16 deletions(-)
      10.2% src/backend/access/brin/
      12.5% src/backend/access/heap/
      18.7% src/backend/access/spgist/
       8.3% src/backend/statistics/
      11.6% src/backend/tsearch/
      38.4% src/test/modules/injection_points/
    
    diff --git a/src/backend/access/brin/brin_minmax_multi.c b/src/backend/access/brin/brin_minmax_multi.c
    index 0298a9da8ba..0e87ce759f1 100644
    --- a/src/backend/access/brin/brin_minmax_multi.c
    +++ b/src/backend/access/brin/brin_minmax_multi.c
    @@ -1304,8 +1304,8 @@ merge_overlapping_ranges(FmgrInfo *cmp, Oid colloid,
     static int
     compare_distances(const void *a, const void *b)
     {
    -	DistanceValue *da = (DistanceValue *) a;
    -	DistanceValue *db = (DistanceValue *) b;
    +	const DistanceValue *da = a;
    +	const DistanceValue *db = b;
     
     	if (da->value < db->value)
     		return 1;
    diff --git a/src/backend/access/heap/pruneheap.c b/src/backend/access/heap/pruneheap.c
    index 07aa08cfe14..92aab1d6723 100644
    --- a/src/backend/access/heap/pruneheap.c
    +++ b/src/backend/access/heap/pruneheap.c
    @@ -2021,8 +2021,8 @@ heap_log_freeze_eq(xlhp_freeze_plan *plan, HeapTupleFreeze *frz)
     static int
     heap_log_freeze_cmp(const void *arg1, const void *arg2)
     {
    -	HeapTupleFreeze *frz1 = (HeapTupleFreeze *) arg1;
    -	HeapTupleFreeze *frz2 = (HeapTupleFreeze *) arg2;
    +	const HeapTupleFreeze *frz1 = arg1;
    +	const HeapTupleFreeze *frz2 = arg2;
     
     	if (frz1->xmax < frz2->xmax)
     		return -1;
    diff --git a/src/backend/access/spgist/spgkdtreeproc.c b/src/backend/access/spgist/spgkdtreeproc.c
    index f0167d6ffa6..c02de835847 100644
    --- a/src/backend/access/spgist/spgkdtreeproc.c
    +++ b/src/backend/access/spgist/spgkdtreeproc.c
    @@ -84,8 +84,8 @@ typedef struct SortedPoint
     static int
     x_cmp(const void *a, const void *b)
     {
    -	SortedPoint *pa = (SortedPoint *) a;
    -	SortedPoint *pb = (SortedPoint *) b;
    +	const SortedPoint *pa = a;
    +	const SortedPoint *pb = b;
     
     	if (pa->p->x == pb->p->x)
     		return 0;
    @@ -95,8 +95,8 @@ x_cmp(const void *a, const void *b)
     static int
     y_cmp(const void *a, const void *b)
     {
    -	SortedPoint *pa = (SortedPoint *) a;
    -	SortedPoint *pb = (SortedPoint *) b;
    +	const SortedPoint *pa = a;
    +	const SortedPoint *pb = b;
     
     	if (pa->p->y == pb->p->y)
     		return 0;
    diff --git a/src/backend/statistics/mcv.c b/src/backend/statistics/mcv.c
    index ec650ba029f..dc577b9a1e4 100644
    --- a/src/backend/statistics/mcv.c
    +++ b/src/backend/statistics/mcv.c
    @@ -402,8 +402,8 @@ count_distinct_groups(int numrows, SortItem *items, MultiSortSupport mss)
     static int
     compare_sort_item_count(const void *a, const void *b, void *arg)
     {
    -	SortItem   *ia = (SortItem *) a;
    -	SortItem   *ib = (SortItem *) b;
    +	const SortItem *ia = a;
    +	const SortItem *ib = b;
     
     	if (ia->count == ib->count)
     		return 0;
    diff --git a/src/backend/tsearch/spell.c b/src/backend/tsearch/spell.c
    index e5badb6b43f..3b0abfd9c35 100644
    --- a/src/backend/tsearch/spell.c
    +++ b/src/backend/tsearch/spell.c
    @@ -210,8 +210,8 @@ cmpspellaffix(const void *s1, const void *s2)
     static int
     cmpcmdflag(const void *f1, const void *f2)
     {
    -	CompoundAffixFlag *fv1 = (CompoundAffixFlag *) f1,
    -			   *fv2 = (CompoundAffixFlag *) f2;
    +	const CompoundAffixFlag *fv1 = f1;
    +	const CompoundAffixFlag *fv2 = f2;
     
     	Assert(fv1->flagMode == fv2->flagMode);
     
    diff --git a/src/test/modules/injection_points/injection_points.c b/src/test/modules/injection_points/injection_points.c
    index 25340e8d81b..12ea81a030c 100644
    --- a/src/test/modules/injection_points/injection_points.c
    +++ b/src/test/modules/injection_points/injection_points.c
    @@ -189,7 +189,7 @@ injection_init_shmem(void)
      * otherwise.
      */
     static bool
    -injection_point_allowed(InjectionPointCondition *condition)
    +injection_point_allowed(const InjectionPointCondition *condition)
     {
     	bool		result = true;
     
    @@ -232,7 +232,7 @@ injection_points_cleanup(int code, Datum arg)
     void
     injection_error(const char *name, const void *private_data, void *arg)
     {
    -	InjectionPointCondition *condition = (InjectionPointCondition *) private_data;
    +	const InjectionPointCondition *condition = private_data;
     	char	   *argstr = (char *) arg;
     
     	if (!injection_point_allowed(condition))
    @@ -248,7 +248,7 @@ injection_error(const char *name, const void *private_data, void *arg)
     void
     injection_notice(const char *name, const void *private_data, void *arg)
     {
    -	InjectionPointCondition *condition = (InjectionPointCondition *) private_data;
    +	const InjectionPointCondition *condition = private_data;
     	char	   *argstr = (char *) arg;
     
     	if (!injection_point_allowed(condition))
    @@ -268,7 +268,7 @@ injection_wait(const char *name, const void *private_data, void *arg)
     	uint32		old_wait_counts = 0;
     	int			index = -1;
     	uint32		injection_wait_event = 0;
    -	InjectionPointCondition *condition = (InjectionPointCondition *) private_data;
    +	const InjectionPointCondition *condition = private_data;
     
     	if (inj_state == NULL)
     		injection_init_shmem();
    -- 
    2.34.1
    
    
    --IBFQ0J+7bhRCocF6
    Content-Type: text/x-diff; charset=us-ascii
    Content-Disposition: attachment;
    	filename="v2-0002-Add-const-to-read-only-TableInfo-pointers-in-pg_d.patch"