Questa è una buona domanda. Attualmente, Citus non fornisce un modo diretto per modificare il tipo di partizione dei dati esistenti.
Nel partizionamento dell'intervallo, i record vengono inseriti negli shard in base al valore della colonna della partizione e ai valori min/max dello shard. Se un record x risiede nello shard y, significa y.minvalue <= x.partition_column <= y.maxvalue
.
Nel partizionamento hash, la colonna della partizione viene sottoposta a hash e i record vengono instradati in base a questo valore hash. Pertanto, i valori min/max che vedi in pg_dist_shard
sono i valori limite per il risultato della funzione hash. In questo caso y.minvalue <= hash(x.partition_column) <= y.maxvalue
.
Pertanto, apportare le modifiche che hai menzionato finirebbe con una distribuzione errata. Per passare dalla partizione dell'intervallo alla partizione hash, i dati devono essere ridistribuiti. Per farlo, suggerisco di ricaricare i dati in una tabella vuota con partizioni hash.
Per ulteriori informazioni, puoi fare riferimento a Utilizzo di tabelle distribuite e Distribuzione hash sezioni della documentazione Citus.