Closed avz closed 12 years ago
Yes, such numbers does not fit in Javascript Number type. I plan to implement driver option to disbale type casting, see #95.
Тем более что сейчас никто на 32-битную ОС базы данных не ставит. При изменении версии можно и сломать тут совместимость. Но лучше сделаю параметр вида кастовать/не кастовать bigint/не кастовать ничего.
Как думаете, будет удобнее для использования сделать это опцией result.fetch*() или всего соединения? или модуля, для всех соединений сразу?
Я думаю, как минимум надо дать возможность менять опцию на уровне result.fetch*(). Можно ещё сделать возможность менять дефолтное значение на уровне соединения. С одной стороны удобно менять глобально и, в то же время, если вдруг понадобится другое поведение, то можно будет изменить только в каком-то конкретном месте
Ок, подумаем-с.
Really big integers such as 123456789012345678 converted to number 123456789012345680, as well as parseInt('123456789012345678') = 123456789012345680.
Проблема явно тут:
Даже не представляю как её можно решить, не сломав обратную совместимость. Похоже, единственным рабочим костылём будет возможность опцией отключить преобразование всех mysql-типов в js-типы (как предлагают в соседнем фичреквесте), или опция для отключения преобразования конкретно для типов, в которых могут храниться числа, которые не могут быть представлены аналогичными js типами без потери точности (сейчас это, похоже, только BIGINT и DECIMAL большой длины)