| From: | David Geier <geidav(dot)pg(at)gmail(dot)com> |
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Michael Paquier <michael(at)paquier(dot)xyz> |
| Cc: | Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: Consistently use palloc_object() and palloc_array() |
| Date: | 2025-12-04 09:31:41 |
| Message-ID: | 4ab4a12b-49e9-4ebf-9055-225c8055fed0@gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On 03.12.2025 01:40, Tom Lane wrote:
> Michael Paquier <michael(at)paquier(dot)xyz> writes:
>> It may be a good idea to split the patch into two parts, at least:
>> - One for the bulk of the changes, for the straight-forward changes.
>> Most of what you are suggesting are that for palloc_object and
>> palloc_array which are dropped-in replacements. Checking that these
>> assemble the same before and after offers one extra layer of
>> confidence.
>> - Second one for the more dubious changes.
>
> Yeah, I was thinking the same. Some of those might perhaps be bugs
> that we want to back-patch, so they need to be looked at in a
> different way.
>
> regards, tom lane
Attached are the two patches, rebased on latest master.
The first one contains all changes that either result in no changes to
the disassembly, or only in changes due to the line counts; because
elog.h makes use of __LINE__.
The second patch contains the remaining changes, which is only 11 files.
contrib/fuzzystrmatch/fuzzystrmatch.c: semantic changes, e.g.
palloc(sizeof(char) * strlen(word) + 1);
=>
palloc_array(char, strlen(word) + 1);
contrib/pg_buffercache/pg_buffercache_pages.c: semantic change
palloc(sizeof(uint64) * os_page_count);
=>
palloc_array(int, os_page_count);
src/test/modules/test_rbtree/test_rbtree.c: different way to get pointer
return (RBTNode *) palloc(sizeof(IntRBTreeNode));
=>
return &palloc_object(IntRBTreeNode)->rbtnode;
contrib/hstore/hstore_gin.c
contrib/hstore/hstore_op.c
contrib/pg_trgm/trgm_op.c
contrib/postgres_fdw/postgres_fdw.c
src/backend/executor/execPartition.c
src/backend/partitioning/partprune.c
src/backend/statistics/mvdistinct.c
src/backend/storage/buffer/bufmgr.c
All files contain arithmetic expressions for the count argument of
palloc[0]_array(). The parentheses can change the order in which the
arguments are evaluated which changes the generated code.
--
David Geier
| Attachment | Content-Type | Size |
|---|---|---|
| v2-0002-Consistently-use-palloc_object-and-palloc_array-diff.patch | text/x-patch | 24.9 KB |
| v2-0001-Consistently-use-palloc_object-and-palloc_array-iden.patch | text/x-patch | 609.7 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Daniel Gustafsson | 2025-12-04 09:34:34 | Re: Remove unused function parameters, part 2: replication |
| Previous Message | shveta malik | 2025-12-04 09:30:27 | Re: POC: enable logical decoding when wal_level = 'replica' without a server restart |