aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2017-03-16 12:51:08 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2017-03-16 12:51:08 -0300
commit087e696f066d31cb2f1269a1296a13dfe0bf7a11 (patch)
tree6aeda64e0407766e52b9d859cba9b71c33accfb6 /src/backend
parent5adec6b54dc3a813a316a3b323cfecdce00cffcb (diff)
downloadpostgresql-087e696f066d31cb2f1269a1296a13dfe0bf7a11.tar.gz
postgresql-087e696f066d31cb2f1269a1296a13dfe0bf7a11.zip
Fix ancient get_object_address_opf_member bug
The original coding was trying to use a TypeName as a string Value, which doesn't work; an oversight in my commit a61fd533. Repair. Also, make sure we cover the broken case in the relevant test script. Backpatch to 9.5. Discussion: https://postgr.es/m/20170315151829.bhxsvrp75xdxhm3n@alvherre.pgsql
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/catalog/objectaddress.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index da370fc2593..c8ddb540f69 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -1526,7 +1526,7 @@ get_object_address_opf_member(ObjectType objtype,
ObjectAddress address;
ListCell *cell;
List *copy;
- char *typenames[2];
+ TypeName *typenames[2];
Oid typeoids[2];
int membernum;
int i;
@@ -1548,7 +1548,7 @@ get_object_address_opf_member(ObjectType objtype,
{
ObjectAddress typaddr;
- typenames[i] = strVal(lfirst(cell));
+ typenames[i] = (TypeName *) lfirst(cell);
typaddr = get_object_address_type(OBJECT_TYPE, cell, missing_ok);
typeoids[i] = typaddr.objectId;
if (++i >= 2)
@@ -1575,7 +1575,9 @@ get_object_address_opf_member(ObjectType objtype,
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_OBJECT),
errmsg("operator %d (%s, %s) of %s does not exist",
- membernum, typenames[0], typenames[1],
+ membernum,
+ TypeNameToString(typenames[0]),
+ TypeNameToString(typenames[1]),
getObjectDescription(&famaddr))));
}
else
@@ -1604,7 +1606,9 @@ get_object_address_opf_member(ObjectType objtype,
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_OBJECT),
errmsg("function %d (%s, %s) of %s does not exist",
- membernum, typenames[0], typenames[1],
+ membernum,
+ TypeNameToString(typenames[0]),
+ TypeNameToString(typenames[1]),
getObjectDescription(&famaddr))));
}
else
@@ -1941,7 +1945,7 @@ pg_get_object_address(PG_FUNCTION_ARGS)
}
/*
- * get_object_name is pretty sensitive to the length its input lists;
+ * get_object_address is pretty sensitive to the length its input lists;
* check that they're what it wants.
*/
switch (type)