[PATCH] Fix ouside scope t_ctid (ItemPointerData)

From: Ranier Vilela <ranier(dot)vf(at)gmail(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: [PATCH] Fix ouside scope t_ctid (ItemPointerData)
Date: 2020-05-14 17:40:50
Message-ID: CAEudQAr+=6dTa2V12CLx_bx5-VvbKtFaemQbeqhpjdZ2Zn_JtA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,
ItemPointerData, on the contrary, from what the name says,
it is not a pointer to a structure, but a structure in fact.
When assigning the name of the structure variable to a pointer, it may even
work,
but, it is not the right thing to do and it becomes a nightmare,
to discover that any other error they have is at cause.

So:
1. In some cases, there may be a misunderstanding in the use of
ItemPointerData.
2. When using the variable name in an assignment, the variable's address is
used.
3. While this works for a structure, it shouldn't be the right thing to do.
4. If we have a local variable, its scope is limited and when it loses its
scope, memory is certainly garbage.
5. While this may be working for heapam.c, I believe it is being abused and
should be compliant with
the Postgres API and use the functions that were created for this.

The patch is primarily intended to correct the use of ItemPointerData.
But it is also changing the style, reducing the scope of some variables.
If that was not acceptable, reduce the scope and someone has objections,
I can change the patch, to focus only on the use of ItemPointerData.
But as style changes are rare, if possible, it would be good to seize the
opportunity.

regards,
Ranier Vilela

Attachment Content-Type Size
001_fix_outside_scope_t_ctid.patch application/octet-stream 5.0 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Mark Dilger 2020-05-14 18:03:56 Re: [PATCH] Fix ouside scope t_ctid (ItemPointerData)
Previous Message Jehan-Guillaume de Rorthais 2020-05-14 16:44:57 Re: Strange decreasing value of pg_last_wal_receive_lsn()