public inbox for [email protected]
help / color / mirror / Atom feedFrom: Alvaro Herrera <[email protected]>
Subject: [PATCH v11 4/4] Various tweaks, mostly naming
Date: Tue, 11 Feb 2020 20:12:20 -0300
Got rid of TYPCATEGORY_MULTIRANGE. It doesn't serve any purpose that I
can see, so I just switched that to TYPCATEGORY_RANGE.
load_multirangetype_info() pointlessly open-coded
get_range_multirange_subtype(). Simplify.
Name changes:
get_multirange_subtype -> get_range_multirange_subtype
This is more in line with how we name lsyscache.c functions, given
that the cache it serves is on pg_range. (Apparently in earlier
versions of the patch there was a pg_multirange catalog, but not
anymore)
MULTIRANGETYPE -> RANGEMULTIRANGE (the syscache)
Mostly the same reasons as above. The naming also makes us move it
next to RANGETYPE; they're both in pg_range. (It was in the place
where pg_multirange would be, alphabetically.)
---
src/backend/commands/typecmds.c | 2 +-
src/backend/parser/parse_coerce.c | 10 +++++-----
src/backend/utils/cache/lsyscache.c | 10 ++++------
src/backend/utils/cache/syscache.c | 23 ++++++++++++-----------
src/backend/utils/cache/typcache.c | 15 ++-------------
src/backend/utils/fmgr/funcapi.c | 4 ++--
src/include/catalog/pg_type.dat | 12 ++++++------
src/include/catalog/pg_type.h | 1 -
src/include/utils/lsyscache.h | 2 +-
src/include/utils/syscache.h | 2 +-
src/include/utils/typcache.h | 2 +-
11 files changed, 35 insertions(+), 48 deletions(-)
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c
index a8dea8d58e..bd792234f8 100644
--- a/src/backend/commands/typecmds.c
+++ b/src/backend/commands/typecmds.c
@@ -1589,7 +1589,7 @@ DefineRange(CreateRangeStmt *stmt)
GetUserId(), /* owner's ID */
-1, /* internal size (always varlena) */
TYPTYPE_MULTIRANGE, /* type-type (multirange type) */
- TYPCATEGORY_MULTIRANGE, /* type-category (multirange type) */
+ TYPCATEGORY_RANGE, /* type-category (range type) */
false, /* multirange types are never preferred */
DEFAULT_TYPDELIM, /* array element delimiter */
F_MULTIRANGE_IN, /* input procedure */
diff --git a/src/backend/parser/parse_coerce.c b/src/backend/parser/parse_coerce.c
index ff1310c8f4..27bfc4bf8c 100644
--- a/src/backend/parser/parse_coerce.c
+++ b/src/backend/parser/parse_coerce.c
@@ -1599,7 +1599,7 @@ check_generic_type_consistency(const Oid *actual_arg_types,
/* Get the element type based on the multirange type, if we have one */
if (OidIsValid(multirange_typeid))
{
- multirange_typelem = get_multirange_subtype(multirange_typeid);
+ multirange_typelem = get_range_multirange_subtype(multirange_typeid);
if (!OidIsValid(multirange_typelem))
return false; /* should be a multirange, but isn't */
@@ -1938,7 +1938,7 @@ enforce_generic_type_consistency(const Oid *actual_arg_types,
}
else
{
- multirange_typelem = get_multirange_subtype(multirange_typeid);
+ multirange_typelem = get_range_multirange_subtype(multirange_typeid);
if (!OidIsValid(multirange_typelem))
ereport(ERROR,
(errcode(ERRCODE_DATATYPE_MISMATCH),
@@ -2202,7 +2202,7 @@ resolve_generic_type(Oid declared_type,
else if (context_declared_type == ANYMULTIRANGEOID)
{
Oid context_base_type = getBaseType(context_actual_type);
- Oid multirange_typelem = get_multirange_subtype(context_base_type);
+ Oid multirange_typelem = get_range_multirange_subtype(context_base_type);
Oid range_typelem = get_range_subtype(multirange_typelem);
Oid array_typeid = get_array_type(range_typelem);
@@ -2248,7 +2248,7 @@ resolve_generic_type(Oid declared_type,
{
/* Use the element type corresponding to actual type */
Oid context_base_type = getBaseType(context_actual_type);
- Oid multirange_typelem = get_multirange_subtype(context_base_type);
+ Oid multirange_typelem = get_range_multirange_subtype(context_base_type);
if (!OidIsValid(multirange_typelem))
ereport(ERROR,
@@ -2281,7 +2281,7 @@ resolve_generic_type(Oid declared_type,
else if (context_declared_type == ANYMULTIRANGEOID)
{
Oid context_base_type = getBaseType(context_actual_type);
- Oid multirange_typelem = get_multirange_subtype(context_base_type);
+ Oid multirange_typelem = get_range_multirange_subtype(context_base_type);
if (!OidIsValid(multirange_typelem))
ereport(ERROR,
diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c
index 56a145c666..7ba93c43d7 100644
--- a/src/backend/utils/cache/lsyscache.c
+++ b/src/backend/utils/cache/lsyscache.c
@@ -3133,7 +3133,7 @@ get_namespace_name_or_temp(Oid nspid)
return get_namespace_name(nspid);
}
-/* ---------- PG_RANGE CACHE ---------- */
+/* ---------- PG_RANGE CACHES ---------- */
/*
* get_range_subtype
@@ -3211,20 +3211,18 @@ get_range_multirange(Oid rangeOid)
return InvalidOid;
}
-/* ---------- PG_MULTIRANGE CACHE ---------- */
-
/*
- * get_multirange_subtype
+ * get_range_multirange_subtype
* Returns the subtype of a given multirange type
*
* Returns InvalidOid if the type is not a multirange type.
*/
Oid
-get_multirange_subtype(Oid multirangeOid)
+get_range_multirange_subtype(Oid multirangeOid)
{
HeapTuple tp;
- tp = SearchSysCache1(MULTIRANGETYPE, ObjectIdGetDatum(multirangeOid));
+ tp = SearchSysCache1(RANGEMULTIRANGE, ObjectIdGetDatum(multirangeOid));
if (HeapTupleIsValid(tp))
{
Form_pg_range rngtup = (Form_pg_range) GETSTRUCT(tp);
diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c
index fb9179c42a..7654331a59 100644
--- a/src/backend/utils/cache/syscache.c
+++ b/src/backend/utils/cache/syscache.c
@@ -508,17 +508,6 @@ static const struct cachedesc cacheinfo[] = {
},
4
},
- {RangeRelationId, /* MULTIRANGE */
- RangeMultirangeTypidIndexId,
- 1,
- {
- Anum_pg_range_rngmultitypid,
- 0,
- 0,
- 0
- },
- 4
- },
{NamespaceRelationId, /* NAMESPACENAME */
NamespaceNameIndexId,
1,
@@ -662,6 +651,18 @@ static const struct cachedesc cacheinfo[] = {
},
64
},
+ {RangeRelationId, /* RANGEMULTIRANGE */
+ RangeMultirangeTypidIndexId,
+ 1,
+ {
+ Anum_pg_range_rngmultitypid,
+ 0,
+ 0,
+ 0
+ },
+ 4
+ },
+
{RangeRelationId, /* RANGETYPE */
RangeTypidIndexId,
1,
diff --git a/src/backend/utils/cache/typcache.c b/src/backend/utils/cache/typcache.c
index 6677bc8bdc..9383b24f65 100644
--- a/src/backend/utils/cache/typcache.c
+++ b/src/backend/utils/cache/typcache.c
@@ -897,7 +897,6 @@ load_rangetype_info(TypeCacheEntry *typentry)
typentry->rngelemtype = lookup_type_cache(subtypeOid, 0);
}
-
/*
* load_multirangetype_info --- helper routine to set up multirange type
* information
@@ -905,26 +904,16 @@ load_rangetype_info(TypeCacheEntry *typentry)
static void
load_multirangetype_info(TypeCacheEntry *typentry)
{
- Form_pg_range pg_range;
- HeapTuple tup;
Oid rangetypeOid;
- /* get information from pg_range */
- tup = SearchSysCache1(MULTIRANGETYPE, ObjectIdGetDatum(typentry->type_id));
- /* should not fail, since we already checked typtype ... */
- if (!HeapTupleIsValid(tup))
+ rangetypeOid = get_range_multirange_subtype(typentry->type_id);
+ if (!OidIsValid(rangetypeOid))
elog(ERROR, "cache lookup failed for multirange type %u",
typentry->type_id);
- pg_range = (Form_pg_range) GETSTRUCT(tup);
-
- rangetypeOid = pg_range->rngtypid;
-
- ReleaseSysCache(tup);
typentry->rngtype = lookup_type_cache(rangetypeOid, TYPECACHE_RANGE_INFO);
}
-
/*
* load_domaintype_info --- helper routine to set up domain constraint info
*
diff --git a/src/backend/utils/fmgr/funcapi.c b/src/backend/utils/fmgr/funcapi.c
index defc801f7a..afc617939f 100644
--- a/src/backend/utils/fmgr/funcapi.c
+++ b/src/backend/utils/fmgr/funcapi.c
@@ -683,7 +683,7 @@ resolve_polymorphic_tupdesc(TupleDesc tupdesc, oidvector *declared_args,
ANYRANGEOID);
/* check for inconsistent range and multirange results */
- rngtype = get_multirange_subtype(mltrngtype);
+ rngtype = get_range_multirange_subtype(mltrngtype);
if (OidIsValid(anyrange_type) && anyrange_type != rngtype)
return false;
@@ -1020,7 +1020,7 @@ resolve_polymorphic_argtypes(int numargs, Oid *argtypes, char *argmodes,
ANYRANGEOID);
/* check for inconsistent range and multirange results */
- rngtype = get_multirange_subtype(mltrngtype);
+ rngtype = get_range_multirange_subtype(mltrngtype);
if (OidIsValid(anyrange_type) && anyrange_type != rngtype)
return false;
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index beaa70dce6..7d4bf4c5d8 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -489,34 +489,34 @@
# multirange types
{ oid => '8009', array_type_oid => '8010', descr => 'multirange of integers',
typname => 'int4multirange', typlen => '-1', typbyval => 'f', typtype => 'm',
- typcategory => 'M', typinput => 'multirange_in', typoutput => 'multirange_out',
+ typcategory => 'R', typinput => 'multirange_in', typoutput => 'multirange_out',
typreceive => 'multirange_recv', typsend => 'multirange_send',
typanalyze => 'multirange_typanalyze', typalign => 'i', typstorage => 'x' },
{ oid => '8011', array_type_oid => '8012', descr => 'multirange of numerics',
typname => 'nummultirange', typlen => '-1', typbyval => 'f', typtype => 'm',
- typcategory => 'M', typinput => 'multirange_in', typoutput => 'multirange_out',
+ typcategory => 'R', typinput => 'multirange_in', typoutput => 'multirange_out',
typreceive => 'multirange_recv', typsend => 'multirange_send',
typanalyze => 'multirange_typanalyze', typalign => 'i', typstorage => 'x' },
{ oid => '8013', array_type_oid => '8014',
descr => 'multirange of timestamps without time zone',
typname => 'tsmultirange', typlen => '-1', typbyval => 'f', typtype => 'm',
- typcategory => 'M', typinput => 'multirange_in', typoutput => 'multirange_out',
+ typcategory => 'R', typinput => 'multirange_in', typoutput => 'multirange_out',
typreceive => 'multirange_recv', typsend => 'multirange_send',
typanalyze => 'multirange_typanalyze', typalign => 'd', typstorage => 'x' },
{ oid => '8015', array_type_oid => '8016',
descr => 'multirange of timestamps with time zone',
typname => 'tstzmultirange', typlen => '-1', typbyval => 'f', typtype => 'm',
- typcategory => 'M', typinput => 'multirange_in', typoutput => 'multirange_out',
+ typcategory => 'R', typinput => 'multirange_in', typoutput => 'multirange_out',
typreceive => 'multirange_recv', typsend => 'multirange_send',
typanalyze => 'multirange_typanalyze', typalign => 'd', typstorage => 'x' },
{ oid => '8017', array_type_oid => '8018', descr => 'multirange of dates',
typname => 'datemultirange', typlen => '-1', typbyval => 'f', typtype => 'm',
- typcategory => 'M', typinput => 'multirange_in', typoutput => 'multirange_out',
+ typcategory => 'R', typinput => 'multirange_in', typoutput => 'multirange_out',
typreceive => 'multirange_recv', typsend => 'multirange_send',
typanalyze => 'multirange_typanalyze', typalign => 'i', typstorage => 'x' },
{ oid => '8019', array_type_oid => '8020', descr => 'multirange of bigints',
typname => 'int8multirange', typlen => '-1', typbyval => 'f', typtype => 'm',
- typcategory => 'M', typinput => 'multirange_in', typoutput => 'multirange_out',
+ typcategory => 'R', typinput => 'multirange_in', typoutput => 'multirange_out',
typreceive => 'multirange_recv', typsend => 'multirange_send',
typanalyze => 'multirange_typanalyze', typalign => 'd', typstorage => 'x' },
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 600ac58c9d..c113320b9c 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -270,7 +270,6 @@ typedef FormData_pg_type *Form_pg_type;
#define TYPCATEGORY_ENUM 'E'
#define TYPCATEGORY_GEOMETRIC 'G'
#define TYPCATEGORY_NETWORK 'I' /* think INET */
-#define TYPCATEGORY_MULTIRANGE 'M'
#define TYPCATEGORY_NUMERIC 'N'
#define TYPCATEGORY_PSEUDOTYPE 'P'
#define TYPCATEGORY_RANGE 'R'
diff --git a/src/include/utils/lsyscache.h b/src/include/utils/lsyscache.h
index 7d1674a3b6..fffd4c5a45 100644
--- a/src/include/utils/lsyscache.h
+++ b/src/include/utils/lsyscache.h
@@ -182,7 +182,7 @@ extern char *get_namespace_name_or_temp(Oid nspid);
extern Oid get_range_subtype(Oid rangeOid);
extern Oid get_range_collation(Oid rangeOid);
extern Oid get_range_multirange(Oid rangeOid);
-extern Oid get_multirange_subtype(Oid multirangeOid);
+extern Oid get_range_multirange_subtype(Oid multirangeOid);
extern Oid get_index_column_opclass(Oid index_oid, int attno);
#define type_is_array(typid) (get_element_type(typid) != InvalidOid)
diff --git a/src/include/utils/syscache.h b/src/include/utils/syscache.h
index bc51bbeb54..e8f393520a 100644
--- a/src/include/utils/syscache.h
+++ b/src/include/utils/syscache.h
@@ -66,7 +66,6 @@ enum SysCacheIdentifier
INDEXRELID,
LANGNAME,
LANGOID,
- MULTIRANGETYPE,
NAMESPACENAME,
NAMESPACEOID,
OPERNAMENSP,
@@ -80,6 +79,7 @@ enum SysCacheIdentifier
PUBLICATIONOID,
PUBLICATIONREL,
PUBLICATIONRELMAP,
+ RANGEMULTIRANGE,
RANGETYPE,
RELNAMENSP,
RELOID,
diff --git a/src/include/utils/typcache.h b/src/include/utils/typcache.h
index fe240ea004..9957be4640 100644
--- a/src/include/utils/typcache.h
+++ b/src/include/utils/typcache.h
@@ -101,7 +101,7 @@ typedef struct TypeCacheEntry
/*
* Fields computed when TYPCACHE_MULTIRANGE_INFO is required.
*/
- struct TypeCacheEntry *rngtype;
+ struct TypeCacheEntry *rngtype; /* underlying range type */
/*
* Domain's base type and typmod if it's a domain type. Zeroes if not
--
2.20.1
--wRRV7LY7NUeQGEoC--
view thread (3+ messages)
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected]
Subject: Re: [PATCH v11 4/4] Various tweaks, mostly naming
In-Reply-To: <no-message-id-1881600@localhost>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox