This patch fixes cases where a qualifier (const, in all cases here) was dropped by a cast, but the cast was otherwise necessary or desirable, so the straightforward fix is to add the qualifier into the cast.

This was checked with gcc -Wcast-qual, but it doesn't fix all such warnings, only the trivially fixable ones.
From b8ce9fd7377e666bb9fbd774e48741a74d9a7091 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <[email protected]>
Date: Sat, 13 Dec 2025 23:34:38 +0100
Subject: [PATCH] Fix accidentally cast away qualifiers

This fixes cases where a qualifier (const, in all cases here) was
dropped by a cast, but the cast was otherwise necessary or desirable,
so the straightforward fix is to add the qualifier into the cast.
---
 contrib/intarray/_int_selfuncs.c              |  2 +-
 contrib/pageinspect/heapfuncs.c               |  2 +-
 contrib/uuid-ossp/uuid-ossp.c                 |  4 +-
 src/backend/access/common/toast_compression.c |  8 ++--
 src/backend/access/nbtree/nbtinsert.c         |  4 +-
 src/backend/access/transam/xloginsert.c       |  4 +-
 src/backend/backup/backup_manifest.c          |  2 +-
 src/backend/backup/basebackup.c               |  2 +-
 src/backend/backup/basebackup_incremental.c   |  6 +--
 src/backend/executor/nodeIndexscan.c          |  4 +-
 src/backend/libpq/auth-scram.c                |  4 +-
 src/backend/libpq/crypt.c                     |  4 +-
 src/backend/nodes/nodeFuncs.c                 |  6 +--
 src/backend/nodes/outfuncs.c                  | 12 ++---
 src/backend/nodes/tidbitmap.c                 |  4 +-
 src/backend/statistics/extended_stats.c       |  4 +-
 src/backend/storage/ipc/shm_mq.c              |  2 +-
 src/backend/tsearch/spell.c                   |  4 +-
 src/backend/utils/adt/geo_spgist.c            |  4 +-
 src/backend/utils/adt/json.c                  |  2 +-
 src/backend/utils/adt/pg_locale_builtin.c     |  2 +-
 src/backend/utils/adt/rangetypes.c            |  8 ++--
 src/backend/utils/adt/rangetypes_gist.c       |  4 +-
 src/bin/pg_basebackup/walmethods.c            |  2 +-
 src/bin/pg_rewind/filemap.c                   |  4 +-
 src/bin/pg_verifybackup/astreamer_verify.c    |  2 +-
 src/bin/pg_walsummary/pg_walsummary.c         |  4 +-
 src/common/scram-common.c                     |  4 +-
 src/common/unicode_case.c                     |  4 +-
 src/include/access/tupmacs.h                  |  2 +-
 src/include/common/hashfn_unstable.h          |  2 +-
 src/include/utils/memutils.h                  | 12 ++---
 src/include/varatt.h                          | 48 +++++++++----------
 src/interfaces/libpq/fe-auth-scram.c          |  2 +-
 src/interfaces/libpq/fe-auth.c                |  4 +-
 src/port/pg_crc32c_armv8.c                    | 10 ++--
 src/port/pg_popcount_aarch64.c                |  4 +-
 src/test/isolation/isolationtester.c          |  8 ++--
 .../modules/libpq_pipeline/libpq_pipeline.c   |  2 +-
 .../modules/test_tidstore/test_tidstore.c     |  8 ++--
 40 files changed, 110 insertions(+), 110 deletions(-)

diff --git a/contrib/intarray/_int_selfuncs.c b/contrib/intarray/_int_selfuncs.c
index c3e19cdf27f..4a7053028c6 100644
--- a/contrib/intarray/_int_selfuncs.c
+++ b/contrib/intarray/_int_selfuncs.c
@@ -328,7 +328,7 @@ int_query_opr_selec(ITEM *item, Datum *mcelems, float4 
*mcefreqs,
 static int
 compare_val_int4(const void *a, const void *b)
 {
-       int32           key = *(int32 *) a;
+       int32           key = *(const int32 *) a;
        int32           value = DatumGetInt32(*(const Datum *) b);
 
        if (key < value)
diff --git a/contrib/pageinspect/heapfuncs.c b/contrib/pageinspect/heapfuncs.c
index 1cf0b44e731..8277fa256c3 100644
--- a/contrib/pageinspect/heapfuncs.c
+++ b/contrib/pageinspect/heapfuncs.c
@@ -46,7 +46,7 @@ static inline Oid
 HeapTupleHeaderGetOidOld(const HeapTupleHeaderData *tup)
 {
        if (tup->t_infomask & HEAP_HASOID_OLD)
-               return *((Oid *) ((char *) (tup) + (tup)->t_hoff - 
sizeof(Oid)));
+               return *((const Oid *) ((const char *) (tup) + (tup)->t_hoff - 
sizeof(Oid)));
        else
                return InvalidOid;
 }
diff --git a/contrib/uuid-ossp/uuid-ossp.c b/contrib/uuid-ossp/uuid-ossp.c
index 70e698f4ab3..aa4d0becace 100644
--- a/contrib/uuid-ossp/uuid-ossp.c
+++ b/contrib/uuid-ossp/uuid-ossp.c
@@ -337,7 +337,7 @@ uuid_generate_internal(int v, unsigned char *ns, const char 
*ptr, int len)
                                                elog(ERROR, "could not 
initialize %s context: %s", "MD5",
                                                         
pg_cryptohash_error(ctx));
                                        if (pg_cryptohash_update(ctx, ns, 
sizeof(uu)) < 0 ||
-                                               pg_cryptohash_update(ctx, 
(unsigned char *) ptr, len) < 0)
+                                               pg_cryptohash_update(ctx, 
(const unsigned char *) ptr, len) < 0)
                                                elog(ERROR, "could not update 
%s context: %s", "MD5",
                                                         
pg_cryptohash_error(ctx));
                                        /* we assume sizeof MD5 result is 16, 
same as UUID size */
@@ -356,7 +356,7 @@ uuid_generate_internal(int v, unsigned char *ns, const char 
*ptr, int len)
                                                elog(ERROR, "could not 
initialize %s context: %s", "SHA1",
                                                         
pg_cryptohash_error(ctx));
                                        if (pg_cryptohash_update(ctx, ns, 
sizeof(uu)) < 0 ||
-                                               pg_cryptohash_update(ctx, 
(unsigned char *) ptr, len) < 0)
+                                               pg_cryptohash_update(ctx, 
(const unsigned char *) ptr, len) < 0)
                                                elog(ERROR, "could not update 
%s context: %s", "SHA1",
                                                         
pg_cryptohash_error(ctx));
                                        if (pg_cryptohash_final(ctx, 
sha1result, sizeof(sha1result)) < 0)
diff --git a/src/backend/access/common/toast_compression.c 
b/src/backend/access/common/toast_compression.c
index 1336328cc0b..d449613b21f 100644
--- a/src/backend/access/common/toast_compression.c
+++ b/src/backend/access/common/toast_compression.c
@@ -88,7 +88,7 @@ pglz_decompress_datum(const struct varlena *value)
        result = (struct varlena *) 
palloc(VARDATA_COMPRESSED_GET_EXTSIZE(value) + VARHDRSZ);
 
        /* decompress the data */
-       rawsize = pglz_decompress((char *) value + VARHDRSZ_COMPRESSED,
+       rawsize = pglz_decompress((const char *) value + VARHDRSZ_COMPRESSED,
                                                          VARSIZE(value) - 
VARHDRSZ_COMPRESSED,
                                                          VARDATA(result),
                                                          
VARDATA_COMPRESSED_GET_EXTSIZE(value), true);
@@ -116,7 +116,7 @@ pglz_decompress_datum_slice(const struct varlena *value,
        result = (struct varlena *) palloc(slicelength + VARHDRSZ);
 
        /* decompress the data */
-       rawsize = pglz_decompress((char *) value + VARHDRSZ_COMPRESSED,
+       rawsize = pglz_decompress((const char *) value + VARHDRSZ_COMPRESSED,
                                                          VARSIZE(value) - 
VARHDRSZ_COMPRESSED,
                                                          VARDATA(result),
                                                          slicelength, false);
@@ -192,7 +192,7 @@ lz4_decompress_datum(const struct varlena *value)
        result = (struct varlena *) 
palloc(VARDATA_COMPRESSED_GET_EXTSIZE(value) + VARHDRSZ);
 
        /* decompress the data */
-       rawsize = LZ4_decompress_safe((char *) value + VARHDRSZ_COMPRESSED,
+       rawsize = LZ4_decompress_safe((const char *) value + 
VARHDRSZ_COMPRESSED,
                                                                  
VARDATA(result),
                                                                  
VARSIZE(value) - VARHDRSZ_COMPRESSED,
                                                                  
VARDATA_COMPRESSED_GET_EXTSIZE(value));
@@ -229,7 +229,7 @@ lz4_decompress_datum_slice(const struct varlena *value, 
int32 slicelength)
        result = (struct varlena *) palloc(slicelength + VARHDRSZ);
 
        /* decompress the data */
-       rawsize = LZ4_decompress_safe_partial((char *) value + 
VARHDRSZ_COMPRESSED,
+       rawsize = LZ4_decompress_safe_partial((const char *) value + 
VARHDRSZ_COMPRESSED,
                                                                                
  VARDATA(result),
                                                                                
  VARSIZE(value) - VARHDRSZ_COMPRESSED,
                                                                                
  slicelength,
diff --git a/src/backend/access/nbtree/nbtinsert.c 
b/src/backend/access/nbtree/nbtinsert.c
index 63eda08f7a2..d17aaa5aa0f 100644
--- a/src/backend/access/nbtree/nbtinsert.c
+++ b/src/backend/access/nbtree/nbtinsert.c
@@ -3023,8 +3023,8 @@ _bt_deadblocks(Page page, OffsetNumber *deletable, int 
ndeletable,
 static inline int
 _bt_blk_cmp(const void *arg1, const void *arg2)
 {
-       BlockNumber b1 = *((BlockNumber *) arg1);
-       BlockNumber b2 = *((BlockNumber *) arg2);
+       BlockNumber b1 = *((const BlockNumber *) arg1);
+       BlockNumber b2 = *((const BlockNumber *) arg2);
 
        return pg_cmp_u32(b1, b2);
 }
diff --git a/src/backend/access/transam/xloginsert.c 
b/src/backend/access/transam/xloginsert.c
index 92c48e768c3..f928bc7c0ef 100644
--- a/src/backend/access/transam/xloginsert.c
+++ b/src/backend/access/transam/xloginsert.c
@@ -677,8 +677,8 @@ XLogRecordAssemble(RmgrId rmid, uint8 info,
                        if (regbuf->flags & REGBUF_STANDARD)
                        {
                                /* Assume we can omit data between pd_lower and 
pd_upper */
-                               uint16          lower = ((PageHeader) 
page)->pd_lower;
-                               uint16          upper = ((PageHeader) 
page)->pd_upper;
+                               uint16          lower = ((const PageHeaderData 
*) page)->pd_lower;
+                               uint16          upper = ((const PageHeaderData 
*) page)->pd_upper;
 
                                if (lower >= SizeOfPageHeaderData &&
                                        upper > lower &&
diff --git a/src/backend/backup/backup_manifest.c 
b/src/backend/backup/backup_manifest.c
index c697caef895..3760b003907 100644
--- a/src/backend/backup/backup_manifest.c
+++ b/src/backend/backup/backup_manifest.c
@@ -388,7 +388,7 @@ AppendStringToManifest(backup_manifest_info *manifest, 
const char *s)
        Assert(manifest != NULL);
        if (manifest->still_checksumming)
        {
-               if (pg_cryptohash_update(manifest->manifest_ctx, (uint8 *) s, 
len) < 0)
+               if (pg_cryptohash_update(manifest->manifest_ctx, (const uint8 
*) s, len) < 0)
                        elog(ERROR, "failed to update checksum of backup 
manifest: %s",
                                 pg_cryptohash_error(manifest->manifest_ctx));
        }
diff --git a/src/backend/backup/basebackup.c b/src/backend/backup/basebackup.c
index ba06a38c033..463c0756b5e 100644
--- a/src/backend/backup/basebackup.c
+++ b/src/backend/backup/basebackup.c
@@ -1104,7 +1104,7 @@ sendFileWithContent(bbsink *sink, const char *filename, 
const char *content,
 
        _tarWriteHeader(sink, filename, NULL, &statbuf, false);
 
-       if (pg_checksum_update(&checksum_ctx, (uint8 *) content, len) < 0)
+       if (pg_checksum_update(&checksum_ctx, (const uint8 *) content, len) < 0)
                elog(ERROR, "could not update checksum of file \"%s\"",
                         filename);
 
diff --git a/src/backend/backup/basebackup_incremental.c 
b/src/backend/backup/basebackup_incremental.c
index 77dce24ad38..f58ed9b198a 100644
--- a/src/backend/backup/basebackup_incremental.c
+++ b/src/backend/backup/basebackup_incremental.c
@@ -930,7 +930,7 @@ GetIncrementalFileSize(unsigned num_blocks_required)
 static uint32
 hash_string_pointer(const char *s)
 {
-       unsigned char *ss = (unsigned char *) s;
+       const unsigned char *ss = (const unsigned char *) s;
 
        return hash_bytes(ss, strlen(s));
 }
@@ -1049,8 +1049,8 @@ manifest_report_error(JsonManifestParseContext *context, 
const char *fmt,...)
 static int
 compare_block_numbers(const void *a, const void *b)
 {
-       BlockNumber aa = *(BlockNumber *) a;
-       BlockNumber bb = *(BlockNumber *) b;
+       BlockNumber aa = *(const BlockNumber *) a;
+       BlockNumber bb = *(const BlockNumber *) b;
 
        return pg_cmp_u32(aa, bb);
 }
diff --git a/src/backend/executor/nodeIndexscan.c 
b/src/backend/executor/nodeIndexscan.c
index 84823f0b615..a616abff04c 100644
--- a/src/backend/executor/nodeIndexscan.c
+++ b/src/backend/executor/nodeIndexscan.c
@@ -443,8 +443,8 @@ static int
 reorderqueue_cmp(const pairingheap_node *a, const pairingheap_node *b,
                                 void *arg)
 {
-       ReorderTuple *rta = (ReorderTuple *) a;
-       ReorderTuple *rtb = (ReorderTuple *) b;
+       const ReorderTuple *rta = (const ReorderTuple *) a;
+       const ReorderTuple *rtb = (const ReorderTuple *) b;
        IndexScanState *node = (IndexScanState *) arg;
 
        /* exchange argument order to invert the sort order */
diff --git a/src/backend/libpq/auth-scram.c b/src/backend/libpq/auth-scram.c
index 3c41145d926..0267edb29cd 100644
--- a/src/backend/libpq/auth-scram.c
+++ b/src/backend/libpq/auth-scram.c
@@ -1490,8 +1490,8 @@ scram_mock_salt(const char *username, pg_cryptohash_type 
hash_type,
 
        ctx = pg_cryptohash_create(hash_type);
        if (pg_cryptohash_init(ctx) < 0 ||
-               pg_cryptohash_update(ctx, (uint8 *) username, strlen(username)) 
< 0 ||
-               pg_cryptohash_update(ctx, (uint8 *) mock_auth_nonce, 
MOCK_AUTH_NONCE_LEN) < 0 ||
+               pg_cryptohash_update(ctx, (const uint8 *) username, 
strlen(username)) < 0 ||
+               pg_cryptohash_update(ctx, (const uint8 *) mock_auth_nonce, 
MOCK_AUTH_NONCE_LEN) < 0 ||
                pg_cryptohash_final(ctx, sha_digest, key_length) < 0)
        {
                pg_cryptohash_free(ctx);
diff --git a/src/backend/libpq/crypt.c b/src/backend/libpq/crypt.c
index 4c1052b3d42..52722060451 100644
--- a/src/backend/libpq/crypt.c
+++ b/src/backend/libpq/crypt.c
@@ -136,7 +136,7 @@ encrypt_password(PasswordType target_type, const char *role,
                        case PASSWORD_TYPE_MD5:
                                encrypted_password = palloc(MD5_PASSWD_LEN + 1);
 
-                               if (!pg_md5_encrypt(password, (uint8 *) role, 
strlen(role),
+                               if (!pg_md5_encrypt(password, (const uint8 *) 
role, strlen(role),
                                                                        
encrypted_password, &errstr))
                                        elog(ERROR, "password encryption 
failed: %s", errstr);
                                break;
@@ -284,7 +284,7 @@ plain_crypt_verify(const char *role, const char 
*shadow_pass,
 
                case PASSWORD_TYPE_MD5:
                        if (!pg_md5_encrypt(client_pass,
-                                                               (uint8 *) role,
+                                                               (const uint8 *) 
role,
                                                                strlen(role),
                                                                
crypt_client_pass,
                                                                &errstr))
diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c
index d29664ca5d4..199ed27995f 100644
--- a/src/backend/nodes/nodeFuncs.c
+++ b/src/backend/nodes/nodeFuncs.c
@@ -1009,14 +1009,14 @@ exprCollation(const Node *expr)
                        break;
                case T_JsonExpr:
                        {
-                               const JsonExpr *jsexpr = (JsonExpr *) expr;
+                               const JsonExpr *jsexpr = (const JsonExpr *) 
expr;
 
                                coll = jsexpr->collation;
                        }
                        break;
                case T_JsonBehavior:
                        {
-                               const JsonBehavior *behavior = (JsonBehavior *) 
expr;
+                               const JsonBehavior *behavior = (const 
JsonBehavior *) expr;
 
                                if (behavior->expr)
                                        coll = exprCollation(behavior->expr);
@@ -1593,7 +1593,7 @@ exprLocation(const Node *expr)
                        }
                        break;
                case T_JsonBehavior:
-                       loc = exprLocation(((JsonBehavior *) expr)->expr);
+                       loc = exprLocation(((const JsonBehavior *) expr)->expr);
                        break;
                case T_NullTest:
                        {
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index c8eef2c75d2..40990143927 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -736,17 +736,17 @@ outNode(StringInfo str, const void *obj)
                _outList(str, obj);
        /* nodeRead does not want to see { } around these! */
        else if (IsA(obj, Integer))
-               _outInteger(str, (Integer *) obj);
+               _outInteger(str, (const Integer *) obj);
        else if (IsA(obj, Float))
-               _outFloat(str, (Float *) obj);
+               _outFloat(str, (const Float *) obj);
        else if (IsA(obj, Boolean))
-               _outBoolean(str, (Boolean *) obj);
+               _outBoolean(str, (const Boolean *) obj);
        else if (IsA(obj, String))
-               _outString(str, (String *) obj);
+               _outString(str, (const String *) obj);
        else if (IsA(obj, BitString))
-               _outBitString(str, (BitString *) obj);
+               _outBitString(str, (const BitString *) obj);
        else if (IsA(obj, Bitmapset))
-               outBitmapset(str, (Bitmapset *) obj);
+               outBitmapset(str, (const Bitmapset *) obj);
        else
        {
                appendStringInfoChar(str, '{');
diff --git a/src/backend/nodes/tidbitmap.c b/src/backend/nodes/tidbitmap.c
index 805ff21c7f1..f1f925cb13b 100644
--- a/src/backend/nodes/tidbitmap.c
+++ b/src/backend/nodes/tidbitmap.c
@@ -1439,8 +1439,8 @@ static int
 tbm_shared_comparator(const void *left, const void *right, void *arg)
 {
        PagetableEntry *base = (PagetableEntry *) arg;
-       PagetableEntry *lpage = &base[*(int *) left];
-       PagetableEntry *rpage = &base[*(int *) right];
+       PagetableEntry *lpage = &base[*(const int *) left];
+       PagetableEntry *rpage = &base[*(const int *) right];
 
        if (lpage->blockno < rpage->blockno)
                return -1;
diff --git a/src/backend/statistics/extended_stats.c 
b/src/backend/statistics/extended_stats.c
index b9a8f257042..3895ed72ef7 100644
--- a/src/backend/statistics/extended_stats.c
+++ b/src/backend/statistics/extended_stats.c
@@ -915,8 +915,8 @@ multi_sort_compare_dims(int start, int end,
 int
 compare_scalars_simple(const void *a, const void *b, void *arg)
 {
-       return compare_datums_simple(*(Datum *) a,
-                                                                *(Datum *) b,
+       return compare_datums_simple(*(const Datum *) a,
+                                                                *(const Datum 
*) b,
                                                                 (SortSupport) 
arg);
 }
 
diff --git a/src/backend/storage/ipc/shm_mq.c b/src/backend/storage/ipc/shm_mq.c
index 4d6cc16c0bc..3ce6068ac54 100644
--- a/src/backend/storage/ipc/shm_mq.c
+++ b/src/backend/storage/ipc/shm_mq.c
@@ -1041,7 +1041,7 @@ shm_mq_send_bytes(shm_mq_handle *mqh, Size nbytes, const 
void *data,
                         */
                        pg_memory_barrier();
                        memcpy(&mq->mq_ring[mq->mq_ring_offset + offset],
-                                  (char *) data + sent, sendnow);
+                                  (const char *) data + sent, sendnow);
                        sent += sendnow;
 
                        /*
diff --git a/src/backend/tsearch/spell.c b/src/backend/tsearch/spell.c
index e3436dbddd2..ad0ceec37b0 100644
--- a/src/backend/tsearch/spell.c
+++ b/src/backend/tsearch/spell.c
@@ -2463,9 +2463,9 @@ SplitToVariants(IspellDict *Conf, SPNode *snode, SplitVar 
*orig, const char *wor
                while (StopLow < StopHigh)
                {
                        StopMiddle = StopLow + ((StopHigh - StopLow) >> 1);
-                       if (StopMiddle->val == ((uint8 *) (word))[level])
+                       if (StopMiddle->val == ((const uint8 *) (word))[level])
                                break;
-                       else if (StopMiddle->val < ((uint8 *) (word))[level])
+                       else if (StopMiddle->val < ((const uint8 *) 
(word))[level])
                                StopLow = StopMiddle + 1;
                        else
                                StopHigh = StopMiddle;
diff --git a/src/backend/utils/adt/geo_spgist.c 
b/src/backend/utils/adt/geo_spgist.c
index 19bcae3848b..7a19ca3892b 100644
--- a/src/backend/utils/adt/geo_spgist.c
+++ b/src/backend/utils/adt/geo_spgist.c
@@ -92,8 +92,8 @@
 static int
 compareDoubles(const void *a, const void *b)
 {
-       float8          x = *(float8 *) a;
-       float8          y = *(float8 *) b;
+       float8          x = *(const float8 *) a;
+       float8          y = *(const float8 *) b;
 
        if (x == y)
                return 0;
diff --git a/src/backend/utils/adt/json.c b/src/backend/utils/adt/json.c
index 78e84727fdc..0b161398465 100644
--- a/src/backend/utils/adt/json.c
+++ b/src/backend/utils/adt/json.c
@@ -901,7 +901,7 @@ json_agg_finalfn(PG_FUNCTION_ARGS)
 static uint32
 json_unique_hash(const void *key, Size keysize)
 {
-       const JsonUniqueHashEntry *entry = (JsonUniqueHashEntry *) key;
+       const JsonUniqueHashEntry *entry = (const JsonUniqueHashEntry *) key;
        uint32          hash = hash_bytes_uint32(entry->object_id);
 
        hash ^= hash_bytes((const unsigned char *) entry->key, entry->key_len);
diff --git a/src/backend/utils/adt/pg_locale_builtin.c 
b/src/backend/utils/adt/pg_locale_builtin.c
index 1f5fc1c97f3..b5aeb7a337a 100644
--- a/src/backend/utils/adt/pg_locale_builtin.c
+++ b/src/backend/utils/adt/pg_locale_builtin.c
@@ -63,7 +63,7 @@ initcap_wbnext(void *state)
        while (wbstate->offset < wbstate->len &&
                   wbstate->str[wbstate->offset] != '\0')
        {
-               char32_t        u = utf8_to_unicode((unsigned char *) 
wbstate->str +
+               char32_t        u = utf8_to_unicode((const unsigned char *) 
wbstate->str +
                                                                                
wbstate->offset);
                bool            curr_alnum = pg_u_isalnum(u, wbstate->posix);
 
diff --git a/src/backend/utils/adt/rangetypes.c 
b/src/backend/utils/adt/rangetypes.c
index 701aacbbfb0..06cc3af4f4a 100644
--- a/src/backend/utils/adt/rangetypes.c
+++ b/src/backend/utils/adt/rangetypes.c
@@ -2108,7 +2108,7 @@ range_deserialize(TypeCacheEntry *typcache, const 
RangeType *range,
        typalign = typcache->rngelemtype->typalign;
 
        /* initialize data pointer just after the range OID */
-       ptr = (char *) (range + 1);
+       ptr = (const char *) (range + 1);
 
        /* fetch lower bound, if any */
        if (RANGE_HAS_LBOUND(flags))
@@ -2155,7 +2155,7 @@ char
 range_get_flags(const RangeType *range)
 {
        /* fetch the flag byte from datum's last byte */
-       return *((char *) range + VARSIZE(range) - 1);
+       return *((const char *) range + VARSIZE(range) - 1);
 }
 
 /*
@@ -2360,8 +2360,8 @@ range_cmp_bound_values(TypeCacheEntry *typcache, const 
RangeBound *b1,
 int
 range_compare(const void *key1, const void *key2, void *arg)
 {
-       RangeType  *r1 = *(RangeType **) key1;
-       RangeType  *r2 = *(RangeType **) key2;
+       RangeType  *r1 = *(RangeType *const *) key1;
+       RangeType  *r2 = *(RangeType *const *) key2;
        TypeCacheEntry *typcache = (TypeCacheEntry *) arg;
        RangeBound      lower1;
        RangeBound      upper1;
diff --git a/src/backend/utils/adt/rangetypes_gist.c 
b/src/backend/utils/adt/rangetypes_gist.c
index cb9f769cdb2..1a01a8f4c3c 100644
--- a/src/backend/utils/adt/rangetypes_gist.c
+++ b/src/backend/utils/adt/rangetypes_gist.c
@@ -1768,8 +1768,8 @@ interval_cmp_upper(const void *a, const void *b, void 
*arg)
 static int
 common_entry_cmp(const void *i1, const void *i2)
 {
-       double          delta1 = ((CommonEntry *) i1)->delta;
-       double          delta2 = ((CommonEntry *) i2)->delta;
+       double          delta1 = ((const CommonEntry *) i1)->delta;
+       double          delta2 = ((const CommonEntry *) i2)->delta;
 
        if (delta1 < delta2)
                return -1;
diff --git a/src/bin/pg_basebackup/walmethods.c 
b/src/bin/pg_basebackup/walmethods.c
index f6e2371f477..17d22c79f68 100644
--- a/src/bin/pg_basebackup/walmethods.c
+++ b/src/bin/pg_basebackup/walmethods.c
@@ -359,7 +359,7 @@ dir_write(Walfile *f, const void *buf, size_t count)
                                return -1;
                        }
 
-                       inbuf = ((char *) inbuf) + chunk;
+                       inbuf = ((const char *) inbuf) + chunk;
                }
 
                /* Our caller keeps track of the uncompressed size. */
diff --git a/src/bin/pg_rewind/filemap.c b/src/bin/pg_rewind/filemap.c
index 2610bae7e09..b79c47f9252 100644
--- a/src/bin/pg_rewind/filemap.c
+++ b/src/bin/pg_rewind/filemap.c
@@ -694,8 +694,8 @@ datasegpath(RelFileLocator rlocator, ForkNumber forknum, 
BlockNumber segno)
 static int
 final_filemap_cmp(const void *a, const void *b)
 {
-       file_entry_t *fa = *((file_entry_t **) a);
-       file_entry_t *fb = *((file_entry_t **) b);
+       file_entry_t *fa = *((file_entry_t *const *) a);
+       file_entry_t *fb = *((file_entry_t *const *) b);
 
        if (fa->action > fb->action)
                return 1;
diff --git a/src/bin/pg_verifybackup/astreamer_verify.c 
b/src/bin/pg_verifybackup/astreamer_verify.c
index 440c96269d7..0edc8123b43 100644
--- a/src/bin/pg_verifybackup/astreamer_verify.c
+++ b/src/bin/pg_verifybackup/astreamer_verify.c
@@ -268,7 +268,7 @@ member_compute_checksum(astreamer *streamer, 
astreamer_member *member,
        mystreamer->checksum_bytes += len;
 
        /* Feed these bytes to the checksum calculation. */
-       if (pg_checksum_update(checksum_ctx, (uint8 *) data, len) < 0)
+       if (pg_checksum_update(checksum_ctx, (const uint8 *) data, len) < 0)
        {
                report_backup_error(mystreamer->context,
                                                        "could not update 
checksum of file \"%s\"",
diff --git a/src/bin/pg_walsummary/pg_walsummary.c 
b/src/bin/pg_walsummary/pg_walsummary.c
index 74851f84f92..aa214b8616d 100644
--- a/src/bin/pg_walsummary/pg_walsummary.c
+++ b/src/bin/pg_walsummary/pg_walsummary.c
@@ -217,8 +217,8 @@ dump_one_relation(ws_options *opt, RelFileLocator *rlocator,
 static int
 compare_block_numbers(const void *a, const void *b)
 {
-       BlockNumber aa = *(BlockNumber *) a;
-       BlockNumber bb = *(BlockNumber *) b;
+       BlockNumber aa = *(const BlockNumber *) a;
+       BlockNumber bb = *(const BlockNumber *) b;
 
        return pg_cmp_u32(aa, bb);
 }
diff --git a/src/common/scram-common.c b/src/common/scram-common.c
index dbf188ae872..259fa5554b6 100644
--- a/src/common/scram-common.c
+++ b/src/common/scram-common.c
@@ -61,7 +61,7 @@ scram_SaltedPassword(const char *password,
         */
 
        /* First iteration */
-       if (pg_hmac_init(hmac_ctx, (uint8 *) password, password_len) < 0 ||
+       if (pg_hmac_init(hmac_ctx, (const uint8 *) password, password_len) < 0 
||
                pg_hmac_update(hmac_ctx, salt, saltlen) < 0 ||
                pg_hmac_update(hmac_ctx, (uint8 *) &one, sizeof(uint32)) < 0 ||
                pg_hmac_final(hmac_ctx, Ui_prev, key_length) < 0)
@@ -84,7 +84,7 @@ scram_SaltedPassword(const char *password,
                CHECK_FOR_INTERRUPTS();
 #endif
 
-               if (pg_hmac_init(hmac_ctx, (uint8 *) password, password_len) < 
0 ||
+               if (pg_hmac_init(hmac_ctx, (const uint8 *) password, 
password_len) < 0 ||
                        pg_hmac_update(hmac_ctx, (uint8 *) Ui_prev, key_length) 
< 0 ||
                        pg_hmac_final(hmac_ctx, Ui, key_length) < 0)
                {
diff --git a/src/common/unicode_case.c b/src/common/unicode_case.c
index 71acd38d6fe..0b8d3ffc0b4 100644
--- a/src/common/unicode_case.c
+++ b/src/common/unicode_case.c
@@ -231,7 +231,7 @@ convert_case(char *dst, size_t dstsize, const char *src, 
ssize_t srclen,
 
        while ((srclen < 0 || srcoff < srclen) && src[srcoff] != '\0')
        {
-               char32_t        u1 = utf8_to_unicode((unsigned char *) src + 
srcoff);
+               char32_t        u1 = utf8_to_unicode((const unsigned char *) 
src + srcoff);
                int                     u1len = unicode_utf8len(u1);
                char32_t        simple = 0;
                const char32_t *special = NULL;
@@ -373,7 +373,7 @@ check_special_conditions(int conditions, const char *str, 
size_t len,
        if (conditions == 0)
                return true;
        else if (conditions == PG_U_FINAL_SIGMA)
-               return check_final_sigma((unsigned char *) str, len, offset);
+               return check_final_sigma((const unsigned char *) str, len, 
offset);
 
        /* no other conditions supported */
        Assert(false);
diff --git a/src/include/access/tupmacs.h b/src/include/access/tupmacs.h
index e6df8264750..3e5530658c9 100644
--- a/src/include/access/tupmacs.h
+++ b/src/include/access/tupmacs.h
@@ -190,7 +190,7 @@ fetch_att(const void *T, bool attbyval, int attlen)
        : \
        ( \
                AssertMacro((attlen) == -2), \
-               (cur_offset) + (strlen((char *) (attptr)) + 1) \
+               (cur_offset) + (strlen((const char *) (attptr)) + 1) \
        )) \
 )
 
diff --git a/src/include/common/hashfn_unstable.h 
b/src/include/common/hashfn_unstable.h
index 428936b8b64..11225faafda 100644
--- a/src/include/common/hashfn_unstable.h
+++ b/src/include/common/hashfn_unstable.h
@@ -264,7 +264,7 @@ fasthash_accum_cstring_aligned(fasthash_state *hs, const 
char *str)
         */
        for (;;)
        {
-               uint64          chunk = *(uint64 *) str;
+               uint64          chunk = *(const uint64 *) str;
 
                zero_byte_low = haszero64(chunk);
                if (zero_byte_low)
diff --git a/src/include/utils/memutils.h b/src/include/utils/memutils.h
index 2bc13c3a054..11ab1717a16 100644
--- a/src/include/utils/memutils.h
+++ b/src/include/utils/memutils.h
@@ -253,7 +253,7 @@ pg_memory_is_all_zeros(const void *ptr, size_t len)
                 */
                for (; p < aligned_end; p += sizeof(size_t))
                {
-                       if (*(size_t *) p != 0)
+                       if (*(const size_t *) p != 0)
                                return false;
                }
 
@@ -290,10 +290,10 @@ pg_memory_is_all_zeros(const void *ptr, size_t len)
         */
        for (; p < aligned_end - (sizeof(size_t) * 7); p += sizeof(size_t) * 8)
        {
-               if ((((size_t *) p)[0] != 0) | (((size_t *) p)[1] != 0) |
-                       (((size_t *) p)[2] != 0) | (((size_t *) p)[3] != 0) |
-                       (((size_t *) p)[4] != 0) | (((size_t *) p)[5] != 0) |
-                       (((size_t *) p)[6] != 0) | (((size_t *) p)[7] != 0))
+               if ((((const size_t *) p)[0] != 0) | (((const size_t *) p)[1] 
!= 0) |
+                       (((const size_t *) p)[2] != 0) | (((const size_t *) 
p)[3] != 0) |
+                       (((const size_t *) p)[4] != 0) | (((const size_t *) 
p)[5] != 0) |
+                       (((const size_t *) p)[6] != 0) | (((const size_t *) 
p)[7] != 0))
                        return false;
        }
 
@@ -305,7 +305,7 @@ pg_memory_is_all_zeros(const void *ptr, size_t len)
         */
        for (; p < aligned_end; p += sizeof(size_t))
        {
-               if (*(size_t *) p != 0)
+               if (*(const size_t *) p != 0)
                        return false;
        }
 
diff --git a/src/include/varatt.h b/src/include/varatt.h
index eccd3ca04d6..03e9d1869aa 100644
--- a/src/include/varatt.h
+++ b/src/include/varatt.h
@@ -193,25 +193,25 @@ typedef struct
 #ifdef WORDS_BIGENDIAN
 
 #define VARATT_IS_4B(PTR) \
-       ((((varattrib_1b *) (PTR))->va_header & 0x80) == 0x00)
+       ((((const varattrib_1b *) (PTR))->va_header & 0x80) == 0x00)
 #define VARATT_IS_4B_U(PTR) \
-       ((((varattrib_1b *) (PTR))->va_header & 0xC0) == 0x00)
+       ((((const varattrib_1b *) (PTR))->va_header & 0xC0) == 0x00)
 #define VARATT_IS_4B_C(PTR) \
-       ((((varattrib_1b *) (PTR))->va_header & 0xC0) == 0x40)
+       ((((const varattrib_1b *) (PTR))->va_header & 0xC0) == 0x40)
 #define VARATT_IS_1B(PTR) \
-       ((((varattrib_1b *) (PTR))->va_header & 0x80) == 0x80)
+       ((((const varattrib_1b *) (PTR))->va_header & 0x80) == 0x80)
 #define VARATT_IS_1B_E(PTR) \
-       ((((varattrib_1b *) (PTR))->va_header) == 0x80)
+       ((((const varattrib_1b *) (PTR))->va_header) == 0x80)
 #define VARATT_NOT_PAD_BYTE(PTR) \
-       (*((uint8 *) (PTR)) != 0)
+       (*((const uint8 *) (PTR)) != 0)
 
 /* VARSIZE_4B() should only be used on known-aligned data */
 #define VARSIZE_4B(PTR) \
-       (((varattrib_4b *) (PTR))->va_4byte.va_header & 0x3FFFFFFF)
+       (((const varattrib_4b *) (PTR))->va_4byte.va_header & 0x3FFFFFFF)
 #define VARSIZE_1B(PTR) \
-       (((varattrib_1b *) (PTR))->va_header & 0x7F)
+       (((const varattrib_1b *) (PTR))->va_header & 0x7F)
 #define VARTAG_1B_E(PTR) \
-       ((vartag_external) ((varattrib_1b_e *) (PTR))->va_tag)
+       ((vartag_external) ((const varattrib_1b_e *) (PTR))->va_tag)
 
 #define SET_VARSIZE_4B(PTR,len) \
        (((varattrib_4b *) (PTR))->va_4byte.va_header = (len) & 0x3FFFFFFF)
@@ -226,25 +226,25 @@ typedef struct
 #else                                                  /* !WORDS_BIGENDIAN */
 
 #define VARATT_IS_4B(PTR) \
-       ((((varattrib_1b *) (PTR))->va_header & 0x01) == 0x00)
+       ((((const varattrib_1b *) (PTR))->va_header & 0x01) == 0x00)
 #define VARATT_IS_4B_U(PTR) \
-       ((((varattrib_1b *) (PTR))->va_header & 0x03) == 0x00)
+       ((((const varattrib_1b *) (PTR))->va_header & 0x03) == 0x00)
 #define VARATT_IS_4B_C(PTR) \
-       ((((varattrib_1b *) (PTR))->va_header & 0x03) == 0x02)
+       ((((const varattrib_1b *) (PTR))->va_header & 0x03) == 0x02)
 #define VARATT_IS_1B(PTR) \
-       ((((varattrib_1b *) (PTR))->va_header & 0x01) == 0x01)
+       ((((const varattrib_1b *) (PTR))->va_header & 0x01) == 0x01)
 #define VARATT_IS_1B_E(PTR) \
-       ((((varattrib_1b *) (PTR))->va_header) == 0x01)
+       ((((const varattrib_1b *) (PTR))->va_header) == 0x01)
 #define VARATT_NOT_PAD_BYTE(PTR) \
-       (*((uint8 *) (PTR)) != 0)
+       (*((const uint8 *) (PTR)) != 0)
 
 /* VARSIZE_4B() should only be used on known-aligned data */
 #define VARSIZE_4B(PTR) \
-       ((((varattrib_4b *) (PTR))->va_4byte.va_header >> 2) & 0x3FFFFFFF)
+       ((((const varattrib_4b *) (PTR))->va_4byte.va_header >> 2) & 0x3FFFFFFF)
 #define VARSIZE_1B(PTR) \
-       ((((varattrib_1b *) (PTR))->va_header >> 1) & 0x7F)
+       ((((const varattrib_1b *) (PTR))->va_header >> 1) & 0x7F)
 #define VARTAG_1B_E(PTR) \
-       ((vartag_external) ((varattrib_1b_e *) (PTR))->va_tag)
+       ((vartag_external) ((const varattrib_1b_e *) (PTR))->va_tag)
 
 #define SET_VARSIZE_4B(PTR,len) \
        (((varattrib_4b *) (PTR))->va_4byte.va_header = (((uint32) (len)) << 2))
@@ -258,10 +258,10 @@ typedef struct
 
 #endif                                                 /* WORDS_BIGENDIAN */
 
-#define VARDATA_4B(PTR)                (((varattrib_4b *) 
(PTR))->va_4byte.va_data)
-#define VARDATA_4B_C(PTR)      (((varattrib_4b *) 
(PTR))->va_compressed.va_data)
-#define VARDATA_1B(PTR)                (((varattrib_1b *) (PTR))->va_data)
-#define VARDATA_1B_E(PTR)      (((varattrib_1b_e *) (PTR))->va_data)
+#define VARDATA_4B(PTR)                (((const varattrib_4b *) 
(PTR))->va_4byte.va_data)
+#define VARDATA_4B_C(PTR)      (((const varattrib_4b *) 
(PTR))->va_compressed.va_data)
+#define VARDATA_1B(PTR)                (((const varattrib_1b *) 
(PTR))->va_data)
+#define VARDATA_1B_E(PTR)      (((const varattrib_1b_e *) (PTR))->va_data)
 
 /*
  * Externally visible TOAST functions and macros begin here.  All of these
@@ -492,14 +492,14 @@ VARDATA_ANY(const void *PTR)
 static inline Size
 VARDATA_COMPRESSED_GET_EXTSIZE(const void *PTR)
 {
-       return ((varattrib_4b *) PTR)->va_compressed.va_tcinfo & 
VARLENA_EXTSIZE_MASK;
+       return ((const varattrib_4b *) PTR)->va_compressed.va_tcinfo & 
VARLENA_EXTSIZE_MASK;
 }
 
 /* Compression method of a compressed-in-line varlena datum */
 static inline uint32
 VARDATA_COMPRESSED_GET_COMPRESS_METHOD(const void *PTR)
 {
-       return ((varattrib_4b *) PTR)->va_compressed.va_tcinfo >> 
VARLENA_EXTSIZE_BITS;
+       return ((const varattrib_4b *) PTR)->va_compressed.va_tcinfo >> 
VARLENA_EXTSIZE_BITS;
 }
 
 /* Same for external Datums; but note argument is a struct varatt_external */
diff --git a/src/interfaces/libpq/fe-auth-scram.c 
b/src/interfaces/libpq/fe-auth-scram.c
index 05273c91f98..99103b7e2b6 100644
--- a/src/interfaces/libpq/fe-auth-scram.c
+++ b/src/interfaces/libpq/fe-auth-scram.c
@@ -819,7 +819,7 @@ calculate_client_proof(fe_scram_state *state,
                                           strlen(state->server_first_message)) 
< 0 ||
                pg_hmac_update(ctx, (uint8 *) ",", 1) < 0 ||
                pg_hmac_update(ctx,
-                                          (uint8 *) 
client_final_message_without_proof,
+                                          (const uint8 *) 
client_final_message_without_proof,
                                           
strlen(client_final_message_without_proof)) < 0 ||
                pg_hmac_final(ctx, ClientSignature, state->key_length) < 0)
        {
diff --git a/src/interfaces/libpq/fe-auth.c b/src/interfaces/libpq/fe-auth.c
index f08db30dbb7..f05aaea9651 100644
--- a/src/interfaces/libpq/fe-auth.c
+++ b/src/interfaces/libpq/fe-auth.c
@@ -1369,7 +1369,7 @@ PQencryptPassword(const char *passwd, const char *user)
        if (!crypt_pwd)
                return NULL;
 
-       if (!pg_md5_encrypt(passwd, (uint8 *) user, strlen(user), crypt_pwd, 
&errstr))
+       if (!pg_md5_encrypt(passwd, (const uint8 *) user, strlen(user), 
crypt_pwd, &errstr))
        {
                free(crypt_pwd);
                return NULL;
@@ -1482,7 +1482,7 @@ PQencryptPasswordConn(PGconn *conn, const char *passwd, 
const char *user,
                {
                        const char *errstr = NULL;
 
-                       if (!pg_md5_encrypt(passwd, (uint8 *) user, 
strlen(user), crypt_pwd, &errstr))
+                       if (!pg_md5_encrypt(passwd, (const uint8 *) user, 
strlen(user), crypt_pwd, &errstr))
                        {
                                libpq_append_conn_error(conn, "could not 
encrypt password: %s", errstr);
                                free(crypt_pwd);
diff --git a/src/port/pg_crc32c_armv8.c b/src/port/pg_crc32c_armv8.c
index 039986c7b33..9ca0f728d39 100644
--- a/src/port/pg_crc32c_armv8.c
+++ b/src/port/pg_crc32c_armv8.c
@@ -42,32 +42,32 @@ pg_comp_crc32c_armv8(pg_crc32c crc, const void *data, 
size_t len)
        if (!PointerIsAligned(p, uint32) &&
                p + 2 <= pend)
        {
-               crc = __crc32ch(crc, *(uint16 *) p);
+               crc = __crc32ch(crc, *(const uint16 *) p);
                p += 2;
        }
        if (!PointerIsAligned(p, uint64) &&
                p + 4 <= pend)
        {
-               crc = __crc32cw(crc, *(uint32 *) p);
+               crc = __crc32cw(crc, *(const uint32 *) p);
                p += 4;
        }
 
        /* Process eight bytes at a time, as far as we can. */
        while (p + 8 <= pend)
        {
-               crc = __crc32cd(crc, *(uint64 *) p);
+               crc = __crc32cd(crc, *(const uint64 *) p);
                p += 8;
        }
 
        /* Process remaining 0-7 bytes. */
        if (p + 4 <= pend)
        {
-               crc = __crc32cw(crc, *(uint32 *) p);
+               crc = __crc32cw(crc, *(const uint32 *) p);
                p += 4;
        }
        if (p + 2 <= pend)
        {
-               crc = __crc32ch(crc, *(uint16 *) p);
+               crc = __crc32ch(crc, *(const uint16 *) p);
                p += 2;
        }
        if (p < pend)
diff --git a/src/port/pg_popcount_aarch64.c b/src/port/pg_popcount_aarch64.c
index cda73cf6088..7c248ba7561 100644
--- a/src/port/pg_popcount_aarch64.c
+++ b/src/port/pg_popcount_aarch64.c
@@ -383,7 +383,7 @@ pg_popcount_neon(const char *buf, int bytes)
         */
        for (; bytes >= sizeof(uint64); bytes -= sizeof(uint64))
        {
-               popcnt += pg_popcount64(*((uint64 *) buf));
+               popcnt += pg_popcount64(*((const uint64 *) buf));
                buf += sizeof(uint64);
        }
 
@@ -465,7 +465,7 @@ pg_popcount_masked_neon(const char *buf, int bytes, bits8 
mask)
         */
        for (; bytes >= sizeof(uint64); bytes -= sizeof(uint64))
        {
-               popcnt += pg_popcount64(*((uint64 *) buf) & mask64);
+               popcnt += pg_popcount64(*((const uint64 *) buf) & mask64);
                buf += sizeof(uint64);
        }
 
diff --git a/src/test/isolation/isolationtester.c 
b/src/test/isolation/isolationtester.c
index e01c0c9de93..a0aec04d994 100644
--- a/src/test/isolation/isolationtester.c
+++ b/src/test/isolation/isolationtester.c
@@ -498,8 +498,8 @@ run_named_permutations(TestSpec *testspec)
 static int
 step_qsort_cmp(const void *a, const void *b)
 {
-       Step       *stepa = *((Step **) a);
-       Step       *stepb = *((Step **) b);
+       Step       *stepa = *((Step *const *) a);
+       Step       *stepb = *((Step *const *) b);
 
        return strcmp(stepa->name, stepb->name);
 }
@@ -507,8 +507,8 @@ step_qsort_cmp(const void *a, const void *b)
 static int
 step_bsearch_cmp(const void *a, const void *b)
 {
-       char       *stepname = (char *) a;
-       Step       *step = *((Step **) b);
+       const char *stepname = (const char *) a;
+       Step       *step = *((Step *const *) b);
 
        return strcmp(stepname, step->name);
 }
diff --git a/src/test/modules/libpq_pipeline/libpq_pipeline.c 
b/src/test/modules/libpq_pipeline/libpq_pipeline.c
index 03371721460..4a9bb65b9bb 100644
--- a/src/test/modules/libpq_pipeline/libpq_pipeline.c
+++ b/src/test/modules/libpq_pipeline/libpq_pipeline.c
@@ -1576,7 +1576,7 @@ test_singlerowmode(PGconn *conn)
                                                          "SELECT 
generate_series(42, $1)",
                                                          1,
                                                          NULL,
-                                                         (const char **) param,
+                                                         (const char *const *) 
param,
                                                          NULL,
                                                          NULL,
                                                          0) != 1)
diff --git a/src/test/modules/test_tidstore/test_tidstore.c 
b/src/test/modules/test_tidstore/test_tidstore.c
index 9a3a209da0b..c9a035fa494 100644
--- a/src/test/modules/test_tidstore/test_tidstore.c
+++ b/src/test/modules/test_tidstore/test_tidstore.c
@@ -56,16 +56,16 @@ itemptr_cmp(const void *left, const void *right)
        OffsetNumber loff,
                                roff;
 
-       lblk = ItemPointerGetBlockNumber((ItemPointer) left);
-       rblk = ItemPointerGetBlockNumber((ItemPointer) right);
+       lblk = ItemPointerGetBlockNumber((const ItemPointerData *) left);
+       rblk = ItemPointerGetBlockNumber((const ItemPointerData *) right);
 
        if (lblk < rblk)
                return -1;
        if (lblk > rblk)
                return 1;
 
-       loff = ItemPointerGetOffsetNumber((ItemPointer) left);
-       roff = ItemPointerGetOffsetNumber((ItemPointer) right);
+       loff = ItemPointerGetOffsetNumber((const ItemPointerData *) left);
+       roff = ItemPointerGetOffsetNumber((const ItemPointerData *) right);
 
        if (loff < roff)
                return -1;
-- 
2.52.0

Reply via email to