Don't call PageGetSpecialPointer() on page until it's been initialized.
Don't call PageGetSpecialPointer() on page until it's been initialized.

After calling XLogInitBufferForRedo(), the page might be all-zeros if it was
not in page cache already. btree_xlog_unlink_page initialized the page
correctly, but it called PageGetSpecialPointer before initializing it, which
would lead to a corrupt page at WAL replay, if the unlinked page is not in
page cache.

Backpatch to 9.4, the bug came with the rewrite of B-tree page deletion.

lisakowen/gpdb,xinzweb/gpdb,lisakowen/gpdb,50wu/gpdb,jmcatamney/gpdb,adam8157/gpdb,ashwinstar/gpdb,greenplum-db/gpdb,zeroae/postgres-xl,xinzweb/gpdb,greenplum-db/gpdb,greenplum-db/gpdb,50wu/gpdb,jmcatamney/gpdb,lisakowen/gpdb,50wu/gpdb,jmcatamney/gpdb,ashwinstar/gpdb,adam8157/gpdb,jmcatamney/gpdb,lisakowen/gpdb,ashwinstar/gpdb,xinzweb/gpdb,50wu/gpdb,adam8157/gpdb,ashwinstar/gpdb,jmcatamney/gpdb,lisakowen/gpdb,ashwinstar/gpdb,ashwinstar/gpdb,zeroae/postgres-xl,xinzweb/gpdb,zeroae/postgres-xl,adam8157/gpdb,50wu/gpdb,zeroae/postgres-xl,xinzweb/gpdb,greenplum-db/gpdb,jmcatamney/gpdb,50wu/gpdb,adam8157/gpdb,adam8157/gpdb,zeroae/postgres-xl,greenplum-db/gpdb,jmcatamney/gpdb,greenplum-db/gpdb,xinzweb/gpdb,adam8157/gpdb,lisakowen/gpdb,lisakowen/gpdb,adam8157/gpdb,greenplum-db/gpdb,lisakowen/gpdb,50wu/gpdb,50wu/gpdb,greenplum-db/gpdb,xinzweb/gpdb,xinzweb/gpdb,ashwinstar/gpdb,ashwinstar/gpdb,jmcatamney/gpdb