From 06e44788774db29fc7efe8084fc34c3c79235761 Mon Sep 17 00:00:00 2001 From: Teodor Sigaev Date: Mon, 3 Apr 2006 09:35:35 +0000 Subject: Detoast query in g_intbig_consistent and copy query in g_int_consistent. Minor cleanups. --- contrib/intarray/_intbig_gist.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'contrib/intarray/_intbig_gist.c') diff --git a/contrib/intarray/_intbig_gist.c b/contrib/intarray/_intbig_gist.c index c49a2aab534..0c7f90ddd13 100644 --- a/contrib/intarray/_intbig_gist.c +++ b/contrib/intarray/_intbig_gist.c @@ -486,7 +486,7 @@ Datum g_intbig_consistent(PG_FUNCTION_ARGS) { GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); - ArrayType *query = (ArrayType *) PG_GETARG_POINTER(1); + ArrayType *query = (ArrayType *) PG_DETOAST_DATUM(PG_GETARG_POINTER(1)); StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2); bool retval; @@ -495,14 +495,17 @@ g_intbig_consistent(PG_FUNCTION_ARGS) if (strategy == BooleanSearchStrategy) { - PG_RETURN_BOOL(signconsistent((QUERYTYPE *) query, + retval = signconsistent((QUERYTYPE *) query, GETSIGN(DatumGetPointer(entry->key)), - false)); + false); + PG_FREE_IF_COPY(query, 1); + PG_RETURN_BOOL(retval); } - /* XXX what about toasted input? */ - if (ARRISVOID(query)) - return FALSE; + if (ARRISVOID(query)) { + PG_FREE_IF_COPY(query, 1); + PG_RETURN_BOOL(FALSE); + } switch (strategy) { -- cgit v1.2.3