diff options
author | Alexander Korotkov <akorotkov@postgresql.org> | 2021-06-15 21:43:17 +0300 |
---|---|---|
committer | Alexander Korotkov <akorotkov@postgresql.org> | 2021-06-15 21:44:40 +0300 |
commit | 817bb0a7d1e02df4643d37304aed8574cf43f629 (patch) | |
tree | fd34a0b945e8627be7c4c61ec658c26c81e66455 /src/backend/utils | |
parent | 958cfbcf2dd338e3179c2d8a35f48bde020eba60 (diff) | |
download | postgresql-817bb0a7d1e02df4643d37304aed8574cf43f629.tar.gz postgresql-817bb0a7d1e02df4643d37304aed8574cf43f629.zip |
Revert 29854ee8d1 due to buildfarm failures
Reported-by: Tom Lane
Discussion: https://postgr.es/m/CAPpHfdvcnw3x7jdV3r52p4%3D5S4WUxBCzcQKB3JukQHoicv1LSQ%40mail.gmail.com
Diffstat (limited to 'src/backend/utils')
-rw-r--r-- | src/backend/utils/adt/multirangetypes.c | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/src/backend/utils/adt/multirangetypes.c b/src/backend/utils/adt/multirangetypes.c index fbbda4af36d..fbcc27d0726 100644 --- a/src/backend/utils/adt/multirangetypes.c +++ b/src/backend/utils/adt/multirangetypes.c @@ -34,7 +34,6 @@ #include "access/tupmacs.h" #include "common/hashfn.h" -#include "funcapi.h" #include "lib/stringinfo.h" #include "libpq/pqformat.h" #include "miscadmin.h" @@ -1069,39 +1068,6 @@ multirange_constructor0(PG_FUNCTION_ARGS) PG_RETURN_MULTIRANGE_P(make_multirange(mltrngtypid, rangetyp, 0, NULL)); } -/* - * Cast multirange to an array of ranges. - */ -Datum -multirange_to_array(PG_FUNCTION_ARGS) -{ - ArrayBuildState *astate = NULL; - MultirangeType *mr = PG_GETARG_MULTIRANGE_P(0); - TypeCacheEntry *typcache; - int i; - - typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr)); - - astate = initArrayResult(typcache->rngtype->type_id, - CurrentMemoryContext, - false); - - for (i = 0; i < mr->rangeCount; i++) - { - RangeType *r; - - r = multirange_get_range(typcache->rngtype, mr, i); - astate = accumArrayResult(astate, - RangeTypePGetDatum(r), - false, - typcache->rngtype->type_id, - CurrentMemoryContext); - } - - PG_RETURN_ARRAYTYPE_P(makeArrayResult(astate, CurrentMemoryContext)); -} - - /* multirange, multirange -> multirange type functions */ @@ -2679,78 +2645,6 @@ range_merge_from_multirange(PG_FUNCTION_ARGS) PG_RETURN_RANGE_P(result); } -/* Turn multirange into a set of ranges */ -Datum -multirange_unnest(PG_FUNCTION_ARGS) -{ - typedef struct - { - MultirangeType *mr; - TypeCacheEntry *typcache; - int index; - } multirange_unnest_fctx; - - FuncCallContext *funcctx; - multirange_unnest_fctx *fctx; - MemoryContext oldcontext; - - /* stuff done only on the first call of the function */ - if (SRF_IS_FIRSTCALL()) - { - MultirangeType *mr; - - /* create a function context for cross-call persistence */ - funcctx = SRF_FIRSTCALL_INIT(); - - /* - * switch to memory context appropriate for multiple function calls - */ - oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); - - /* - * Get the multirange value and detoast if needed. We can't do this - * earlier because if we have to detoast, we want the detoasted copy - * to be in multi_call_memory_ctx, so it will go away when we're done - * and not before. (If no detoast happens, we assume the originally - * passed multirange will stick around till then.) - */ - mr = PG_GETARG_MULTIRANGE_P(0); - - /* allocate memory for user context */ - fctx = (multirange_unnest_fctx *) palloc(sizeof(multirange_unnest_fctx)); - - /* initialize state */ - fctx->mr = mr; - fctx->index = 0; - fctx->typcache = lookup_type_cache(MultirangeTypeGetOid(mr), - TYPECACHE_MULTIRANGE_INFO); - - funcctx->user_fctx = fctx; - MemoryContextSwitchTo(oldcontext); - } - - /* stuff done on every call of the function */ - funcctx = SRF_PERCALL_SETUP(); - fctx = funcctx->user_fctx; - - if (fctx->index < fctx->mr->rangeCount) - { - RangeType *range; - - range = multirange_get_range(fctx->typcache->rngtype, - fctx->mr, - fctx->index); - fctx->index++; - - SRF_RETURN_NEXT(funcctx, RangeTypePGetDatum(range)); - } - else - { - /* do when there is no more left */ - SRF_RETURN_DONE(funcctx); - } -} - /* Hash support */ /* hash a multirange value */ |