[英]compile postgresql from source
我需要对 /src/backend/storage/smgr/md.c 文件中的 mdwrite 函数进行更改(部分代码,因为我无法固定屏幕截图)
seekpos = (off_t) BLCKSZ * (blocknum % ((BlockNumber) RELSEG_SIZE));
Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE);
**buffer[0] = 'A';**
nbytes = FileWrite(v->mdfd_vfd, **buffer**, BLCKSZ, seekpos, WAIT_EVENT_DATA_FILE_WRITE);
**buffer[0] = 'B';**
TRACE_POSTGRESQL_SMGR_MD_WRITE_DONE(forknum, blocknum,
reln->smgr_rnode.node.spcNode,
reln->smgr_rnode.node.dbNode,
reln->smgr_rnode.node.relNode,
reln->smgr_rnode.backend,
nbytes,
BLCKSZ);
编译安装成功,但是我配置的时候:
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
它让我在 ubuntu 控制台上writing block 0 of relation global/1136
。 我应该如何使用源代码?
改变的重点是什么? 它似乎是为了造成破坏而设计的,这就是它所做的。
完整的消息应该是这样的:
LOG: request to flush past end of generated WAL; request 41/28, currpos 0/1523128
CONTEXT: writing block 0 of relation global/1213
FATAL: xlog flush request 41/28 is not satisfied --- flushed only to 0/1523128
CONTEXT: writing block 0 of relation global/1213
因此,您破坏了要写入的缓冲区的页头中的 LSN,从而导致无法执行的 WAL 刷新请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.