Use binary search instead of brute-force scan in findNamespace().
Tom Lane <tgl@sss.pgh.pa.us>
Use binary search instead of brute-force scan in findNamespace(). The previous coding presented a significant bottleneck when dumping databases containing many thousands of schemas, since the total time spent searching would increase roughly as O(N^2) in the number of objects. Noted by Jeff Janes, though I rewrote his proposed patch to use the existing findObjectByOid infrastructure. Since this is a longstanding performance bug, backpatch to all supported versions.
Files
| Path | Change | +/− |
|---|---|---|
| src/bin/pg_dump/common.c | modified | +16 −3 |
| src/bin/pg_dump/pg_dump.c | modified | +17 −22 |
| src/bin/pg_dump/pg_dump.h | modified | +1 −0 |