mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
Support range data types.
Selectivity estimation functions are missing for some range type operators, which is a TODO. Jeff Davis
This commit is contained in:
30
src/backend/utils/cache/lsyscache.c
vendored
30
src/backend/utils/cache/lsyscache.c
vendored
@ -26,6 +26,7 @@
|
||||
#include "catalog/pg_opclass.h"
|
||||
#include "catalog/pg_operator.h"
|
||||
#include "catalog/pg_proc.h"
|
||||
#include "catalog/pg_range.h"
|
||||
#include "catalog/pg_statistic.h"
|
||||
#include "catalog/pg_type.h"
|
||||
#include "miscadmin.h"
|
||||
@ -2250,6 +2251,16 @@ type_is_enum(Oid typid)
|
||||
return (get_typtype(typid) == TYPTYPE_ENUM);
|
||||
}
|
||||
|
||||
/*
|
||||
* type_is_range
|
||||
* Returns true if the given type is an range type.
|
||||
*/
|
||||
bool
|
||||
type_is_range(Oid typid)
|
||||
{
|
||||
return (get_typtype(typid) == TYPTYPE_RANGE);
|
||||
}
|
||||
|
||||
/*
|
||||
* get_type_category_preferred
|
||||
*
|
||||
@ -2855,3 +2866,22 @@ get_namespace_name(Oid nspid)
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Oid
|
||||
get_range_subtype(Oid rangeOid)
|
||||
{
|
||||
HeapTuple tp;
|
||||
|
||||
tp = SearchSysCache1(RANGETYPE, ObjectIdGetDatum(rangeOid));
|
||||
if (HeapTupleIsValid(tp))
|
||||
{
|
||||
Form_pg_range rngtup = (Form_pg_range) GETSTRUCT(tp);
|
||||
Oid result;
|
||||
|
||||
result = rngtup->rngsubtype;
|
||||
ReleaseSysCache(tp);
|
||||
return result;
|
||||
}
|
||||
else
|
||||
return InvalidOid;
|
||||
}
|
||||
|
12
src/backend/utils/cache/syscache.c
vendored
12
src/backend/utils/cache/syscache.c
vendored
@ -43,6 +43,7 @@
|
||||
#include "catalog/pg_operator.h"
|
||||
#include "catalog/pg_opfamily.h"
|
||||
#include "catalog/pg_proc.h"
|
||||
#include "catalog/pg_range.h"
|
||||
#include "catalog/pg_rewrite.h"
|
||||
#include "catalog/pg_statistic.h"
|
||||
#include "catalog/pg_tablespace.h"
|
||||
@ -554,6 +555,17 @@ static const struct cachedesc cacheinfo[] = {
|
||||
},
|
||||
2048
|
||||
},
|
||||
{RangeRelationId, /* RANGETYPE */
|
||||
RangeTypidIndexId,
|
||||
1,
|
||||
{
|
||||
Anum_pg_range_rngtypid,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
},
|
||||
1024
|
||||
},
|
||||
{RelationRelationId, /* RELNAMENSP */
|
||||
ClassNameNspIndexId,
|
||||
2,
|
||||
|
Reference in New Issue
Block a user