Esa es una buena pregunta. Actualmente, Citus no proporciona una forma directa de cambiar el tipo de partición de los datos existentes.
En el particionamiento por rango, los registros se colocan en fragmentos de acuerdo con el valor de la columna de partición y los valores mínimos/máximos del fragmento. Si un registro x reside en el fragmento y, significa y.minvalue <= x.partition_column <= y.maxvalue
.
En el particionamiento hash, la columna de partición tiene un hash y los registros se enrutan de acuerdo con este valor hash. Por lo tanto, los valores mínimos/máximos que ve en pg_dist_shard
son los valores límite para el resultado de la función hash. En este caso y.minvalue <= hash(x.partition_column) <= y.maxvalue
.
Por lo tanto, hacer los cambios que ha mencionado terminaría con una distribución incorrecta. Para cambiar de partición de rango a partición hash, los datos deben redistribuirse. Para hacerlo, sugiero volver a cargar los datos en una tabla vacía con particiones hash.
Para obtener más información, puede consultar Trabajar con tablas distribuidas y Distribución de hash secciones de Documentación de Citus.