with PostgreSQL, it's special cased and uses IF NOT EXISTS, which returns a PG::Result object, regardless of if it resulted in a drop or not. as far as I can tell, the only way to distinguish if it did or did not drop the index is by a notice you get, which notices are disabled by default (client_min_messages)