也就是说,同一个函数在不同文件返回值的长度完全不同!

    难道elog.c调用的不是timestamp.c中这个函数?继续在源码中查找这个GetCurrentTimestamp函数定义,看是否有多个定义。但是查找的结果是除了这个文件有定义,其他文件都没有这个函数定义,并且在timestamp.c这个函数中添加debug信息也都打印出来了,现在可以确定是函数返回的时候将int64转成int32了。百思不得其解之际,最后在编译日志中发现一个warning:

    在elog.c中添加#include "utils/timestamp.h"头文件,并查看编译日志看是否有其他这样的warning。重新配置编译选项,加上-Werror-implicit-function-declaration,将这种warning改成error,提前报错。