Mycat2
Mycat2 copied to clipboard
RANGE_HASH 优先选择第二个字段计算下标
我使用如下命令创建分片表:
CREATE TABLE db1.`tb1` (`id` bigint PRIMARY KEY AUTO_INCREMENT, a bigint, b bigint)
dbpartition by RANGE_HASH(a,b,0) dbpartitions 2
tbpartition by RANGE_HASH(a,b,0) tbpartitions 2;
自动创建的数据库、表,和 自动生成的配置如下:

然后插入如下数据:
insert into db1.tb1(a,b) values (0,1),(null,2),(null,3),(3,4),(4,5),(5,6),(16,48),(77,87);
只在分区(c0, db1_0, tb1_0) 和 (c1, db1_1, tb1_1) 插入了数据,情况如下:

可以看到,数据是以第二字段:b 计算分区下标的,按照《mycat2权威指南》的说明应该是按第一个字段:a 计算
我看到发生问题的代码大概在这里:

插入的数据,两个字段的值没有规律.用不了这个算法的