aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/index/indexam.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/index/indexam.c')
-rw-r--r--src/backend/access/index/indexam.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c
index 442f41425d4..9dfa0ddfbb6 100644
--- a/src/backend/access/index/indexam.c
+++ b/src/backend/access/index/indexam.c
@@ -852,28 +852,12 @@ index_store_float8_orderby_distances(IndexScanDesc scan, Oid *orderByTypes,
{
int i;
- scan->xs_recheckorderby = recheckOrderBy;
-
- if (!distances)
- {
- Assert(!scan->xs_recheckorderby);
-
- for (i = 0; i < scan->numberOfOrderBys; i++)
- {
- scan->xs_orderbyvals[i] = (Datum) 0;
- scan->xs_orderbynulls[i] = true;
- }
+ Assert(distances || !recheckOrderBy);
- return;
- }
+ scan->xs_recheckorderby = recheckOrderBy;
for (i = 0; i < scan->numberOfOrderBys; i++)
{
- scan->xs_orderbynulls[i] = distances[i].isnull;
-
- if (scan->xs_orderbynulls[i])
- scan->xs_orderbyvals[i] = (Datum) 0;
-
if (orderByTypes[i] == FLOAT8OID)
{
#ifndef USE_FLOAT8_BYVAL
@@ -881,8 +865,16 @@ index_store_float8_orderby_distances(IndexScanDesc scan, Oid *orderByTypes,
if (!scan->xs_orderbynulls[i])
pfree(DatumGetPointer(scan->xs_orderbyvals[i]));
#endif
- if (!scan->xs_orderbynulls[i])
+ if (distances && !distances[i].isnull)
+ {
scan->xs_orderbyvals[i] = Float8GetDatum(distances[i].value);
+ scan->xs_orderbynulls[i] = false;
+ }
+ else
+ {
+ scan->xs_orderbyvals[i] = (Datum) 0;
+ scan->xs_orderbynulls[i] = true;
+ }
}
else if (orderByTypes[i] == FLOAT4OID)
{
@@ -892,8 +884,16 @@ index_store_float8_orderby_distances(IndexScanDesc scan, Oid *orderByTypes,
if (!scan->xs_orderbynulls[i])
pfree(DatumGetPointer(scan->xs_orderbyvals[i]));
#endif
- if (!scan->xs_orderbynulls[i])
+ if (distances && !distances[i].isnull)
+ {
scan->xs_orderbyvals[i] = Float4GetDatum((float4) distances[i].value);
+ scan->xs_orderbynulls[i] = false;
+ }
+ else
+ {
+ scan->xs_orderbyvals[i] = (Datum) 0;
+ scan->xs_orderbynulls[i] = true;
+ }
}
else
{