To je dobrá otázka. V současné době Citus neposkytuje přímý způsob, jak změnit typ oddílu existujících dat.
Při dělení rozsahů jsou záznamy umístěny ve fragmentech podle jejich hodnoty sloupce oddílu a min/max hodnot fragmentu. Pokud se záznam x nachází ve fragmentu y, pak to znamená y.minvalue <= x.partition_column <= y.maxvalue
.
Při rozdělování hash je sloupec oddílu hašován a záznamy jsou směrovány podle této hašované hodnoty. Proto minimální/maximální hodnoty, které vidíte v pg_dist_shard
jsou hraniční hodnoty pro výsledek hashovací funkce. V tomto případě y.minvalue <= hash(x.partition_column) <= y.maxvalue
.
Provedení změn, které jste zmínil, by proto skončilo nesprávnou distribucí. Aby bylo možné přepnout z oddílu rozsahu na oddíl hash, měla by být data znovu distribuována. Chcete-li to provést, doporučuji znovu načíst data do prázdné tabulky rozdělené na hash.
Další informace naleznete v části Práce s distribuovanými tabulkami a Distribuce hash sekce Dokumentace Citus.