Re: pg_get__*_ddl consolidation
| От | Andrew Dunstan |
|---|---|
| Тема | Re: pg_get__*_ddl consolidation |
| Дата | |
| Msg-id | 786bceca-84c4-4a83-9c30-3ce49d81b274@dunslane.net обсуждение |
| Ответ на | Re: pg_get__*_ddl consolidation (SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>) |
| Список | pgsql-hackers |
On 2026-04-13 Mo 3:41 PM, SATYANARAYANA NARLAPURAM wrote:
Hi,On Fri, Apr 10, 2026 at 1:03 PM Jeff Davis <pgsql@j-davis.com> wrote:On Sun, 2026-04-05 at 11:06 -0400, Andrew Dunstan wrote:
> Pushed. I have moved the remaining get_*_ddl items to PG20-1
The line:
role_settings = DatumGetArrayTypeP(datum);
should be DatumGetArrayTypePCopy(), because it's being pfree()d later.
The existing code will sometimes make a copy and sometimes not, e.g.:
-- settings are contrived to make the datum inline
CREATE USER u1;
ALTER ROLE u1 SET search_path = 'public, pg_catalog, pg_temp';
ALTER ROLE u1 SET work_mem='64MB';
ALTER ROLE u1 SET statement_timeout='30s';
ALTER ROLE u1 SET lock_timeout='10s';
ALTER ROLE u1 SET idle_in_transaction_session_timeout = '60s';
SELECT pg_get_role_ddl('u1');
ERROR: pfree called with invalid pointer 0x7986dd0c7cc8 (header
0x0000400600000000)Yes, it appears to be a bug. Attached a patch to fix this. Tested with theattached patch and don't see server crashing after that.
Thanks, pushed.
cheers
andrew
-- Andrew Dunstan EDB: https://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: