Я работаю над приложением rails с моделью IPv6. Я сохраняю адрес IPv6 в двух 32-битных целых и 64-битном целых числах:
+-----------------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------------+------+-----+---------+----------------+
| global_routing_prefix | int(11) unsigned | YES | | NULL | |
| subnet_identifier | int(11) unsigned | YES | | NULL | |
| interface_identifier | bigint(20) unsigned | YES | | NULL | |
К сожалению, когда я иду искать IP-адреса в диапазоне, MySQL выполняет всю арифметику со знаком bigint, поэтому:
mysql> select 2 BETWEEN 0 AND 18446744073709551614;
+--------------------------------------+
| 2 BETWEEN 0 AND 18446744073709551614 |
+--------------------------------------+
| 0 |
+--------------------------------------+
Есть ли работа, которую я могу сделать, или мне нужно разделить interface_identifier на 2 беззнаковых целых числа?
Спасибо, Дональд