Have CLUSTER ignore partitions not owned by caller

If a partitioned table has partitions owned by roles other than the
owner of the partitioned table, don't include them in the to-be-
clustered list.  This is similar to what VACUUM FULL does (except we do
it sooner, because there is no reason to postpone it).  Add a simple
test to verify that only owned partitions are clustered.

While at it, change memory context switch-and-back to occur once per
partition instead of outside of the loop.

Author: Justin Pryzby <[email protected]>
Reviewed-by: Zhihong Yu <[email protected]>
Reviewed-by: Michael Paquier <[email protected]>
Discussion: https://postgr.es/m/[email protected]

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/3f19e176ae0f55a653d62e1504dbe5ad8c1006a0

Modified Files
--------------
src/backend/commands/cluster.c        | 19 ++++++++++++-------
src/test/regress/expected/cluster.out | 25 +++++++++++++++++++++++++
src/test/regress/sql/cluster.sql      | 19 +++++++++++++++++++
3 files changed, 56 insertions(+), 7 deletions(-)

Reply via email to