Voilà une bonne question. Actuellement, Citus ne fournit pas de moyen direct de changer le type de partition des données existantes.
Dans le partitionnement par plage, les enregistrements sont placés dans des partitions en fonction de leur valeur de colonne de partition et des valeurs min/max de partition. Si un enregistrement x réside dans la partition y, cela signifie alors y.minvalue <= x.partition_column <= y.maxvalue
.
Dans le partitionnement par hachage, la colonne de partition est hachée et les enregistrements sont acheminés en fonction de cette valeur hachée. Par conséquent, les valeurs min/max que vous voyez dans pg_dist_shard
sont les valeurs limites du résultat de la fonction de hachage. Dans ce cas y.minvalue <= hash(x.partition_column) <= y.maxvalue
.
Par conséquent, effectuer les modifications que vous avez mentionnées entraînerait une distribution incorrecte. Pour passer de la partition de plage à la partition de hachage, les données doivent être redistribuées. Pour ce faire, je suggère de recharger les données dans une table vide partitionnée par hachage.
Pour plus d'informations, vous pouvez vous référer à Travailler avec des tables distribuées et Hash Distribution sections de la documentation Citus.