(maybe all drop statements in upgrades should be wrapped with code to check for their existance - might require delving into the postgres internal tables which would be horribly version dependant.)
I can't find it in a quick scan of the PG docs, but I'm pretty sure they claim to support the SQL standard schema querying tables as views into the PG-specific schema management stuff... assuming I'm right, and that Oracle also does, this shouldn't actually be
too hard...