Fix DROP OPERATOR FAMILY IF EXISTS.

Essentially, the "IF EXISTS" portion was being ignored, and an error
thrown anyway if the opfamily did not exist.

I broke this in commit fd1843ff8979c0461fb3f1a9eab61140c977e32d; so
backpatch to 9.1.X.

Report and diagnosis by KaiGai Kohei.
This commit is contained in:
Robert Haas 2011-10-21 09:10:46 -04:00
parent d1d094e4cf
commit 5c5138f2f8

View File

@ -1614,10 +1614,9 @@ RemoveOpFamily(RemoveOpFamilyStmt *stmt)
tuple = OpFamilyCacheLookup(amID, stmt->opfamilyname, stmt->missing_ok);
if (!HeapTupleIsValid(tuple))
{
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_OBJECT),
errmsg("operator family \"%s\" does not exist for access method \"%s\"",
NameListToString(stmt->opfamilyname), stmt->amname)));
ereport(NOTICE,
(errmsg("operator family \"%s\" does not exist for access method \"%s\", skipping",
NameListToString(stmt->opfamilyname), stmt->amname)));
return;
}