| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
| Subject: | pgsql: Improve some ancient, crufty code in bootstrap + initdb. |
| Date: | 2020-09-05 20:20:11 |
| Message-ID: | E1kEefT-000342-QG@gemulon.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-committers |
Improve some ancient, crufty code in bootstrap + initdb.
At some point back in the last century, somebody felt that reading
all of pg_type twice was cheaper, or at least easier, than using
repalloc() to resize the Typ[] array dynamically. That seems like an
entirely wacko proposition, so rewrite the code to do it the other
way. (To add insult to injury, there were two not-quite-identical
copies of said code.)
initdb.c's readfile() function had the same disease of preferring
to do double the I/O to avoid resizing its output array. Here,
we can make things easier by using the just-invented pg_get_line()
function to handle reading individual lines without a predetermined
notion of how long they are.
On my machine, it's difficult to detect any net change in the
overall runtime of initdb from these changes; but they should
help on slower buildfarm machines (especially since a buildfarm
cycle involves a lot of initdb's these days).
My attention was drawn to these places by scan-build complaints,
but on inspection they needed a lot more work than just suppressing
dead stores :-(
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/e0f05cd5ba76a75e2ce3b85ba050e48e857dca00
Modified Files
--------------
src/backend/bootstrap/bootstrap.c | 119 +++++++++++++++++++-------------------
src/bin/initdb/initdb.c | 46 +++++----------
2 files changed, 74 insertions(+), 91 deletions(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Peter Eisentraut | 2020-09-06 07:34:12 | pgsql: Remove unused parameter |
| Previous Message | Tom Lane | 2020-09-05 17:17:42 | pgsql: Yet more elimination of dead stores and useless initializations. |