Dear Tom,
Thanks for your reply!
Actually, I already compiled the source code with "-O0" and then got those backtraces.
The hippobuild function just starts building an index access method and it will call hippobuildcallback to iterate each parent table tuple in its function body.
What makes me fell very confused is that the same code works when I call "make check" to run regression test (testing my index) but fails at running normal PG server.
Here are the lines before and after the problematic line hippo.c 154. It is the first line of this function and did nothing.
On the other hand, I will try to adjust my code to fit in PG 9.6 as you suggested.
--------------------------------------
static void hippobuildcallback()
{
.....
.....
.....
Line 148 }
Line 149 /*
Line 150 *This function initializes the entire Hippo. It will call buildcallback many times.
Line 151 */
Line 152 Datum
Line 153 hippobuild(PG_FUNCTION_ARGS)
Line 154 {
Line 155 /*
* This is some routine declarations for variables
*/
Relation heap = (Relation) PG_GETARG_POINTER(0);
Relation index = (Relation) PG_GETARG_POINTER(1);
IndexInfo *indexInfo = (IndexInfo *) PG_GETARG_POINTER(2);
IndexBuildResult *result;
double reltuples;
HippoBuildState buildstate;
Buffer buffer;
......
--------------------------------------
Any hints for this will be greatly appreciated!
Thank you very much!
Jia Yu