diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2018-05-02 12:22:48 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2018-05-02 12:22:48 -0400 |
commit | cec9d03d9165fd62544b63b7f236b9039f1adbe5 (patch) | |
tree | a8922d38b45607c5347d9198cd313835d760b0e6 /src/backend/access/transam/xlog.c | |
parent | 53945b4c13d5342c3e72fcb5a04d6234b9812f44 (diff) | |
download | postgresql-cec9d03d9165fd62544b63b7f236b9039f1adbe5.tar.gz postgresql-cec9d03d9165fd62544b63b7f236b9039f1adbe5.zip |
Fix bogus code for extracting extended-statistics data from syscache.
statext_dependencies_load and statext_ndistinct_load were not up to snuff,
in addition to being randomly different from each other. In detail:
* Deserialize the fetched bytea value before releasing the syscache
entry, not after. This mistake causes visible regression test failures
when running with -DCATCACHE_FORCE_RELEASE. Since it's not exposed by
-DCLOBBER_CACHE_ALWAYS, I think there may be no production hazard here
at present, but it's at least a latent bug.
* Use DatumGetByteaPP not DatumGetByteaP to save a detoasting cycle
for short stats values; the deserialize function has to be, and is,
prepared for short-header values since its other caller uses PP.
* Use a test-and-elog for null stats values in both functions, rather
than a test-and-elog in one case and an Assert in the other. Perhaps
Asserts would be sufficient in both cases, but I don't see a good
argument for them being different.
* Minor cosmetic changes to make these functions more visibly alike.
Backpatch to v10 where this code came in.
Amit Langote, minor additional hacking by me
Discussion: https://postgr.es/m/1349aabb-3a1f-6675-9fc0-65e2ce7491dd@lab.ntt.co.jp
Diffstat (limited to 'src/backend/access/transam/xlog.c')
0 files changed, 0 insertions, 0 deletions