Here is the bug-fix patch again with a description of the context so I can add it to the commit fest.
Joel Jacobson discovered a bug in the function pg_describe_object where it does not produce unique identifiers for some entries in pg_amproc. This patch fixes the bug where when two entries in pg_amproc only differ in amproclefttype or amprocrighttype the same description will be produced by pg_describe_object, by simply adding the two fields (amproclefttype, amprocrighttype) to the description. == Before patch SELECT pg_describe_object('pg_amproc'::regclass,oid,0) FROM pg_amproc WHERE oid IN (10608,10612); pg_describe_object ------------------------------------------------------------------------------------ function 1 bttextcmp(text,text) of operator family array_ops for access method gin function 1 bttextcmp(text,text) of operator family array_ops for access method gin (2 rows) == After patch SELECT pg_describe_object('pg_amproc'::regclass,oid,0) FROM pg_amproc WHERE oid IN (10608,10612); pg_describe_object ---------------------------------------------------------------------------------------------------------------------------------- function 1 bttextcmp(text,text) of operator family array_ops for access method gin for (text[],text[]) function 1 bttextcmp(text,text) of operator family array_ops for access method gin for (character varying[],character varying[]) (2 rows) Regards, Andreas
diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c index ec8eb74..795051e 100644 *** a/src/backend/catalog/dependency.c --- b/src/backend/catalog/dependency.c *************** getObjectDescription(const ObjectAddress *** 2389,2398 **** * textual form of the function with arguments, and the second * %s is the description of the operator family. */ ! appendStringInfo(&buffer, _("function %d %s of %s"), amprocForm->amprocnum, format_procedure(amprocForm->amproc), ! opfam.data); pfree(opfam.data); systable_endscan(amscan); --- 2389,2400 ---- * textual form of the function with arguments, and the second * %s is the description of the operator family. */ ! appendStringInfo(&buffer, _("function %d %s of %s for (%s,%s)"), amprocForm->amprocnum, format_procedure(amprocForm->amproc), ! opfam.data, ! format_type_be(amprocForm->amproclefttype), ! format_type_be(amprocForm->amprocrighttype)); pfree(opfam.data); systable_endscan(amscan);
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers