Това е добър въпрос. В момента Citus не предоставя директен начин за промяна на типа дял на съществуващи данни.
При разделянето на диапазона записите се поставят в шардове според стойността на колоната на дяла и минималните/максималните стойности на сегмента. Ако запис x се намира в шард y, тогава това означава y.minvalue <= x.partition_column <= y.maxvalue
.
При хеширането колоната на дяла се хешира и записите се насочват според тази хеширана стойност. Следователно мин./макс. стойности, които виждате в pg_dist_shard
са граничните стойности за резултата от хеш функцията. В този случай y.minvalue <= hash(x.partition_column) <= y.maxvalue
.
Следователно извършването на промените, които споменахте, ще доведе до неправилно разпределение. За да превключите от дял на диапазон към дял на хеш, данните трябва да бъдат преразпределени. За да направите това, предлагам да презаредите данните в празна хеш-разделена таблица.
За повече информация можете да се обърнете към Работа с разпределени таблици и Разпределение на хеширане раздели на документацията на Citus.