Re: Large writable variables
Tom Lane <tgl@sss.pgh.pa.us>
Attachments
- better-tzdefrules-handling.patch (text/x-diff) patch
I wrote: > 1. tzdefrules_s is filled in the postmaster, and if it's not filled there > it'd be filled by every child process, so there's zero point in converting > it to malloc-on-the-fly style. This is because tzparse() always wants > it filled. That's actually a tad annoying, because it looks to me like > with many timezone settings the data will not get used, but I'm hesitant > to mess with the IANA code's logic enough to improve that. Maybe I'll try > submitting an upstream patch and see what they think of it first. I spent some time studying this, and realized that the reason that they always try to load the TZDEFRULES zone data is that they want to absorb whatever leap-seconds data it has. We don't want that and would be glad to just drop said data, but I'm sure that's intentional on their end, so they are not going to be interested in a patch here. However ... if you assume that any leap-seconds data in that zone can be ignored, then the only case where the data need be loaded is when parsing a POSIX-style zone name that has a DST component but does not specify a POSIX-style transition date rule. That's possible in our code but I do not think it is a mainstream case; in particular, that seems never to be reached when loading a real zone data file. Hence, the attached patch postpones the TZDEFRULES load until we find we actually need it, and ignores any leap-second data therein, and incidentally makes the data space be malloc-on-demand rather than static. This is actually less of a hack compared to the upstream code than what we were doing before, so I feel pretty pleased with it. regards, tom lane
Commits
-
Apply unconstify() in more places
- 0a8590b2a09e 12.0 landed
-
Improve unconstify() documentation
- f2898de98a54 12.0 landed
-
Drop const cast from dlsym() calls
- e6f5d1accd3a 12.0 landed
-
Const-ify a few more large static tables.
- 48d818ede15b 12.0 landed
-
Improve tzparse's handling of TZDEFRULES ("posixrules") zone data.
- fb38d9a2e1ed 9.5.15 landed
- ec5fe7f799a4 9.4.20 landed
- e7eb07f70951 12.0 landed
- db4f9c0258be 11.1 landed
- c776cd47245a 9.3.25 landed
- 312f632005f3 10.6 landed
- 1164389e12b0 9.6.11 landed
-
Avoid statically allocating statement cache in ecpglib/prepare.c.
- e15aae829e3e 12.0 landed
-
Reorder FmgrBuiltin members, saving 25% in size.
- 28d750c0cd5b 12.0 landed
-
Add macro to cast away const without allowing changes to underlying type.
- d1211c63f010 12.0 landed
-
Mark constantly allocated dest receiver as const.
- 93ca02e00560 12.0 landed
-
Avoid statically allocating formatting.c's format string caches.
- fd85e9f78d44 12.0 landed
-
Correct constness of system attributes in heap.c & prerequisites.
- 02a30a09f9e5 12.0 landed
-
Avoid statically allocating gmtsub()'s timezone workspace.
- baa94ebe2cc8 9.3.25 landed
- 5ef71d4bd322 9.6.11 landed
- 27ba589b745f 9.4.20 landed
- 18c725413fad 9.5.15 landed
- d64a54fb9c81 10.6 landed
- d11268237378 11.1 landed
- 3dfef0c519de 12.0 landed
-
Correct constness of a few variables.
- 62649bad831f 12.0 landed
-
Move the replication lag tracker into heap memory.
- e73ca79fc78d 12.0 landed