Re: Large writable variables

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: pgsql-hackers@postgresql.org, Thomas Munro <thomas.munro@enterprisedb.com>
Date: 2018-10-16T05:02:00Z
Lists: pgsql-hackers

Attachments

Hi,

On 2018-10-15 21:50:51 -0700, Andres Freund wrote:
> .data 0000000000000028 spi_printtupDR
> .data 0000000000000028 printsimpleDR
> .data 0000000000000028 donothingDR
> .data 0000000000000028 debugtupDR
> 
> These we could actually make constant, but CreateDestReceiver() as an
> API makes that inconvenient. They also are pretty darn small...  There's
> a security benefit in making them constant and casting the constness
> away - I think that might not be insane.

I.e. do something like the attached.

Greetings,

Andres Freund

Commits

  1. Apply unconstify() in more places

  2. Improve unconstify() documentation

  3. Drop const cast from dlsym() calls

  4. Const-ify a few more large static tables.

  5. Improve tzparse's handling of TZDEFRULES ("posixrules") zone data.

  6. Avoid statically allocating statement cache in ecpglib/prepare.c.

  7. Reorder FmgrBuiltin members, saving 25% in size.

  8. Add macro to cast away const without allowing changes to underlying type.

  9. Mark constantly allocated dest receiver as const.

  10. Avoid statically allocating formatting.c's format string caches.

  11. Correct constness of system attributes in heap.c & prerequisites.

  12. Avoid statically allocating gmtsub()'s timezone workspace.

  13. Correct constness of a few variables.

  14. Move the replication lag tracker into heap memory.