Here's an idea. Why don't we move the function/opclass creation lines to insert.sql, without the DROPs, and use the same functions/opclasses in the three tests insert.sql, alter_table.sql, hash_part.sql and partition_prune.sql, i.e. not recreate what are essentially the same objects three times? This also leaves them around for the pg_upgrade test, which is not a bad thing.
(This would require a few updates to insert.sql because the definitions there are different, but it shouldn't be a problem coverage-wise.) -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services