I'm using Postgres 8.4 and I would like to cluster a partition but keep running into issues with locks. CLUSTER requires an Exclusive Lock and so it gets "stuck behind" running queries that have a Share Lock on the partition even though they are not using the partition. I would be fine if the cluster waited until after the existing queries finished, but this then causes all new queries to back up behind it. I tried doing "NO INHERIT" to remove the partition while the cluster is happening, but that also requires an Exclusive Lock and runs into the same problem.
So is there some way that I can CLUSTER a partition? I would be fine with removing the partition while the CLUSTER is happening, if that makes it possible.