diff options
Diffstat (limited to 'src/backend/utils/adt/enum.c')
-rw-r--r-- | src/backend/utils/adt/enum.c | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/src/backend/utils/adt/enum.c b/src/backend/utils/adt/enum.c index 009c6c3f92..9000d1ca16 100644 --- a/src/backend/utils/adt/enum.c +++ b/src/backend/utils/adt/enum.c @@ -3,11 +3,11 @@ * enum.c * I/O functions, operators, aggregates etc for enum types * - * Copyright (c) 2006-2009, PostgreSQL Global Development Group + * Copyright (c) 2006-2010, PostgreSQL Global Development Group * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/enum.c,v 1.7 2009/01/01 17:23:49 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/enum.c,v 1.11 2010/02/26 02:01:08 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -45,10 +45,9 @@ enum_in(PG_FUNCTION_ARGS) format_type_be(enumtypoid), name))); - tup = SearchSysCache(ENUMTYPOIDNAME, - ObjectIdGetDatum(enumtypoid), - CStringGetDatum(name), - 0, 0); + tup = SearchSysCache2(ENUMTYPOIDNAME, + ObjectIdGetDatum(enumtypoid), + CStringGetDatum(name)); if (!HeapTupleIsValid(tup)) ereport(ERROR, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), @@ -56,6 +55,10 @@ enum_in(PG_FUNCTION_ARGS) format_type_be(enumtypoid), name))); + /* + * This comes from pg_enum.oid and stores system oids in user tables. This + * oid must be preserved by binary upgrades. + */ enumoid = HeapTupleGetOid(tup); ReleaseSysCache(tup); @@ -71,9 +74,7 @@ enum_out(PG_FUNCTION_ARGS) HeapTuple tup; Form_pg_enum en; - tup = SearchSysCache(ENUMOID, - ObjectIdGetDatum(enumval), - 0, 0, 0); + tup = SearchSysCache1(ENUMOID, ObjectIdGetDatum(enumval)); if (!HeapTupleIsValid(tup)) ereport(ERROR, (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION), @@ -109,10 +110,9 @@ enum_recv(PG_FUNCTION_ARGS) format_type_be(enumtypoid), name))); - tup = SearchSysCache(ENUMTYPOIDNAME, - ObjectIdGetDatum(enumtypoid), - CStringGetDatum(name), - 0, 0); + tup = SearchSysCache2(ENUMTYPOIDNAME, + ObjectIdGetDatum(enumtypoid), + CStringGetDatum(name)); if (!HeapTupleIsValid(tup)) ereport(ERROR, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), @@ -137,9 +137,7 @@ enum_send(PG_FUNCTION_ARGS) HeapTuple tup; Form_pg_enum en; - tup = SearchSysCache(ENUMOID, - ObjectIdGetDatum(enumval), - 0, 0, 0); + tup = SearchSysCache1(ENUMOID, ObjectIdGetDatum(enumval)); if (!HeapTupleIsValid(tup)) ereport(ERROR, (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION), @@ -265,9 +263,7 @@ enum_first(PG_FUNCTION_ARGS) (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("could not determine actual enum type"))); - list = SearchSysCacheList(ENUMTYPOIDNAME, 1, - ObjectIdGetDatum(enumtypoid), - 0, 0, 0); + list = SearchSysCacheList1(ENUMTYPOIDNAME, ObjectIdGetDatum(enumtypoid)); num = list->n_members; for (i = 0; i < num; i++) { @@ -306,9 +302,7 @@ enum_last(PG_FUNCTION_ARGS) (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("could not determine actual enum type"))); - list = SearchSysCacheList(ENUMTYPOIDNAME, 1, - ObjectIdGetDatum(enumtypoid), - 0, 0, 0); + list = SearchSysCacheList1(ENUMTYPOIDNAME, ObjectIdGetDatum(enumtypoid)); num = list->n_members; for (i = 0; i < num; i++) { @@ -389,9 +383,7 @@ enum_range_internal(Oid enumtypoid, Oid lower, Oid upper) j; Datum *elems; - list = SearchSysCacheList(ENUMTYPOIDNAME, 1, - ObjectIdGetDatum(enumtypoid), - 0, 0, 0); + list = SearchSysCacheList1(ENUMTYPOIDNAME, ObjectIdGetDatum(enumtypoid)); total = list->n_members; elems = (Datum *) palloc(total * sizeof(Datum)); |