Dat is een goede vraag. Momenteel biedt Citus geen directe manier om het partitietype van bestaande gegevens te wijzigen.
Bij bereikpartitionering worden records in shards geplaatst op basis van hun partitiekolomwaarde en shard min/max-waarden. Als een record x zich in shard y bevindt, betekent dit y.minvalue <= x.partition_column <= y.maxvalue
.
Bij hash-partitionering wordt de partitiekolom gehasht en worden records gerouteerd volgens deze gehashte waarde. Daarom zijn min/max-waarden die u ziet in pg_dist_shard
zijn de grenswaarden voor het resultaat van de hashfunctie. In dit geval y.minvalue <= hash(x.partition_column) <= y.maxvalue
.
Daarom zou het uitvoeren van de wijzigingen die u hebt genoemd, eindigen met een onjuiste distributie. Om over te schakelen van bereikpartitie naar hashpartitie, moeten de gegevens opnieuw worden gedistribueerd. Om dat te doen, raad ik aan de gegevens opnieuw te laden naar een lege hash-gepartitioneerde tabel.
Voor meer informatie kunt u verwijzen naar Werken met gedistribueerde tabellen en Hashdistributie secties van Citus-documentatie.