diff --git a/src/backend/access/gist/gistscan.c b/src/backend/access/gist/gistscan.c index ad39294875..ee3289ae8e 100644 --- a/src/backend/access/gist/gistscan.c +++ b/src/backend/access/gist/gistscan.c @@ -230,6 +230,10 @@ gistrescan(PG_FUNCTION_ARGS) { ScanKey skey = scan->keyData + i; + /* + * Copy consistent support function to ScanKey structure + * instead of function implementing filtering operator. + */ fmgr_info_copy(&(skey->sk_func), &(so->giststate->consistentFn[skey->sk_attno - 1]), so->giststate->scanCxt); @@ -285,8 +289,6 @@ gistrescan(PG_FUNCTION_ARGS) GIST_DISTANCE_PROC, skey->sk_attno, RelationGetRelationName(scan->indexRelation)); - fmgr_info_copy(&(skey->sk_func), finfo, so->giststate->scanCxt); - /* * Look up the datatype returned by the original ordering * operator. GiST always uses a float8 for the distance function, @@ -301,6 +303,12 @@ gistrescan(PG_FUNCTION_ARGS) */ so->orderByTypes[i] = get_func_rettype(skey->sk_func.fn_oid); + /* + * Copy distance support function to ScanKey structure + * instead of function implementing ordering operator. + */ + fmgr_info_copy(&(skey->sk_func), finfo, so->giststate->scanCxt); + /* Restore prior fn_extra pointers, if not first time */ if (!first_time) skey->sk_func.fn_extra = fn_extras[i];