mirror of
https://github.com/postgres/postgres.git
synced 2025-09-03 15:22:11 +03:00
Flag index metapages as standard-format in xlog.c calls.
btree, hash, and bloom indexes all set up their metapages in standard format (that is, with pd_lower and pd_upper correctly delimiting the unused area); but they mostly didn't inform the xlog routines of this. When calling log_newpage[_buffer], this is bad because it loses the opportunity to compress unused data out of the WAL record. When calling XLogRegisterBuffer, it's not such a performance problem because all of these call sites also use REGBUF_WILL_INIT, preventing an FPI image from being written. But it's still a good idea to provide the flag when relevant, because that aids WAL consistency checking. This completes the project of getting all the in-core index AMs to handle their metapage WAL operations similarly. Amit Kapila, reviewed by Michael Paquier Discussion: https://postgr.es/m/0d273805-0e9e-ec1a-cb84-d4da400b8f85@lab.ntt.co.jp
This commit is contained in:
@@ -898,7 +898,7 @@ _bt_insertonpg(Relation rel,
|
||||
xlmeta.fastroot = metad->btm_fastroot;
|
||||
xlmeta.fastlevel = metad->btm_fastlevel;
|
||||
|
||||
XLogRegisterBuffer(2, metabuf, REGBUF_WILL_INIT);
|
||||
XLogRegisterBuffer(2, metabuf, REGBUF_WILL_INIT | REGBUF_STANDARD);
|
||||
XLogRegisterBufData(2, (char *) &xlmeta, sizeof(xl_btree_metadata));
|
||||
|
||||
xlinfo = XLOG_BTREE_INSERT_META;
|
||||
@@ -2032,7 +2032,7 @@ _bt_newroot(Relation rel, Buffer lbuf, Buffer rbuf)
|
||||
|
||||
XLogRegisterBuffer(0, rootbuf, REGBUF_WILL_INIT);
|
||||
XLogRegisterBuffer(1, lbuf, REGBUF_STANDARD);
|
||||
XLogRegisterBuffer(2, metabuf, REGBUF_WILL_INIT);
|
||||
XLogRegisterBuffer(2, metabuf, REGBUF_WILL_INIT | REGBUF_STANDARD);
|
||||
|
||||
md.root = rootblknum;
|
||||
md.level = metad->btm_level;
|
||||
|
Reference in New Issue
Block a user