Alvaro Herrera wrote: > Patch 0005 adds getObjectIdentityParts(), which returns the object > identity in arrays that can be passed to pg_get_object_address. This > part needs slight revisions so I'm not sure I will be able to push > tomorrow.
Here's a fresh version of this patch. I chose to add a SQL-accessible version, pg_identify_object_as_address, to make it easier to test. In doing so I noticed a couple of bugs, and most interestingly I noticed that it was essentially impossible to cleanly address an array type; doing a roundtrip through the new functions would get me the base type when I used "integer[]" but the array type when I used "_int4". This looked like a problem, so I traced through it and noticed that we're using the type name *list* as a list, rather than as a TypeName, to refer to OBJECT_TYPE and OBJECT_DOMAIN; I hadn't understood the significance of this until I realized that domains would be represented with arrayBounds set to a non-empty list for the integer[] syntax, but the name list would have "pg_catalog integer" only; when the rest of TypeName was discarded, the fact that we were talking about an array was completely forgotten. Before the dawn of time we had this: -static void -CommentType(List *typename, char *comment) -{ - TypeName *tname; - Oid oid; - - /* XXX a bit of a crock; should accept TypeName in COMMENT syntax */ - tname = makeTypeNameFromNameList(typename); where the XXX comment was removed by commit c10575ff005c330d047534562 without a corresponding comment in the new function. I'm going to see about changing the grammar to get this fixed; this patch is important because it will enable us to complete^Wcontinue working on the DDL deparse testing framework. -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers