Re: Large writable variables

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Cc: pgsql-hackers@postgresql.org, Thomas Munro <thomas.munro@enterprisedb.com>
Date: 2018-10-17T21:51:06Z
Lists: pgsql-hackers
Hi,

On 2018-10-17 23:43:31 +0200, Peter Eisentraut wrote:
> On 17/10/2018 22:02, Andres Freund wrote:
> >> Your version with __builtin_types_compatible_p() doesn't work for
> >> casting between char * and const char *, so it wouldn't be very useful.
> > Huh, why wouldn't it work for char *? Seems to work fine for me?
> 
> __builtin_types_compatible_p(const char *, char *) returns false (0) for me.

Right, that's why I added a const, inside the macro,  to the type
specified in the unconstify argument. So typeof() yields a const char *,
and the return type is specified as char *, and adding a const in the
argument also yields a const char *.

I'd merged my version since, I don't feel particularly attached to it
though...

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.