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 ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers