mirror of
https://github.com/postgres/postgres.git
synced 2025-11-28 11:44:57 +03:00
Remove no-op GiST support functions in the core GiST opclasses.
The preceding patch allowed us to remove useless GiST support functions. This patch actually does that for all the no-op cases in the core GiST code. This buys us whatever performance gain is to be had, and more importantly exercises the preceding patch. There remain no-op functions in the contrib GiST opclasses, but those will take more work to remove. Discussion: https://postgr.es/m/CAJEAwVELVx9gYscpE=Be6iJxvdW5unZ_LkcAaVNSeOwvdwtD=A@mail.gmail.com
This commit is contained in:
@@ -185,37 +185,9 @@ gist_box_union(PG_FUNCTION_ARGS)
|
||||
}
|
||||
|
||||
/*
|
||||
* GiST Compress methods for boxes
|
||||
*
|
||||
* do not do anything.
|
||||
* We store boxes as boxes in GiST indexes, so we do not need
|
||||
* compress, decompress, or fetch functions.
|
||||
*/
|
||||
Datum
|
||||
gist_box_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(PG_GETARG_POINTER(0));
|
||||
}
|
||||
|
||||
/*
|
||||
* GiST DeCompress method for boxes (also used for points, polygons
|
||||
* and circles)
|
||||
*
|
||||
* do not do anything --- we just use the stored box as is.
|
||||
*/
|
||||
Datum
|
||||
gist_box_decompress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(PG_GETARG_POINTER(0));
|
||||
}
|
||||
|
||||
/*
|
||||
* GiST Fetch method for boxes
|
||||
* do not do anything --- we just return the stored box as is.
|
||||
*/
|
||||
Datum
|
||||
gist_box_fetch(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(PG_GETARG_POINTER(0));
|
||||
}
|
||||
|
||||
/*
|
||||
* The GiST Penalty method for boxes (also used for points)
|
||||
|
||||
@@ -576,17 +576,9 @@ inet_gist_compress(PG_FUNCTION_ARGS)
|
||||
}
|
||||
|
||||
/*
|
||||
* The GiST decompress function
|
||||
*
|
||||
* do not do anything --- we just use the stored GistInetKey as-is.
|
||||
* We do not need a decompress function, because the other GiST inet
|
||||
* support functions work with the GistInetKey representation.
|
||||
*/
|
||||
Datum
|
||||
inet_gist_decompress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
|
||||
PG_RETURN_POINTER(entry);
|
||||
}
|
||||
|
||||
/*
|
||||
* The GiST fetch function
|
||||
|
||||
@@ -216,30 +216,11 @@ range_gist_union(PG_FUNCTION_ARGS)
|
||||
PG_RETURN_RANGE_P(result_range);
|
||||
}
|
||||
|
||||
/* compress, decompress, fetch are no-ops */
|
||||
Datum
|
||||
range_gist_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
|
||||
PG_RETURN_POINTER(entry);
|
||||
}
|
||||
|
||||
Datum
|
||||
range_gist_decompress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
|
||||
PG_RETURN_POINTER(entry);
|
||||
}
|
||||
|
||||
Datum
|
||||
range_gist_fetch(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
|
||||
PG_RETURN_POINTER(entry);
|
||||
}
|
||||
/*
|
||||
* We store ranges as ranges in GiST indexes, so we do not need
|
||||
* compress, decompress, or fetch functions. Note this implies a limit
|
||||
* on the size of range values that can be indexed.
|
||||
*/
|
||||
|
||||
/*
|
||||
* GiST page split penalty function.
|
||||
|
||||
@@ -272,6 +272,10 @@ gtsvector_compress(PG_FUNCTION_ARGS)
|
||||
Datum
|
||||
gtsvector_decompress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
/*
|
||||
* We need to detoast the stored value, because the other gtsvector
|
||||
* support functions don't cope with toasted values.
|
||||
*/
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
SignTSVector *key = (SignTSVector *) PG_DETOAST_DATUM(entry->key);
|
||||
|
||||
|
||||
@@ -43,11 +43,10 @@ gtsquery_compress(PG_FUNCTION_ARGS)
|
||||
PG_RETURN_POINTER(retval);
|
||||
}
|
||||
|
||||
Datum
|
||||
gtsquery_decompress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_DATUM(PG_GETARG_DATUM(0));
|
||||
}
|
||||
/*
|
||||
* We do not need a decompress function, because the other gtsquery
|
||||
* support functions work with the compressed representation.
|
||||
*/
|
||||
|
||||
Datum
|
||||
gtsquery_consistent(PG_FUNCTION_ARGS)
|
||||
|
||||
Reference in New Issue
Block a user