2016-12-08 10 views
1

Доброе утро, человек! В моей системе после миграции с Firebird 2.5 до 3.0 многие отчеты и другие функции стали давать проблемы, заявляя, что ожидалось, что Integer и текущий - LargeInt. Я посмотрел и увидел, что некоторые поиски с count в 3.0 возвращают столбец Bigint, а в 2.5 он возвращает столбец Integer.Количество в Firebird 3.0 Bigint vs Firebird 2.5 Целое число

Чтобы решить, как я знаю, мне пришлось бы бросить бросок на все, что дает ошибку, проверено и работает, но это большая система, это даст много работы.

Кто-нибудь знает, как это можно решить в самой Firebird? Некоторая конфигурация или что-то еще?

ответ

0

Я использую Unidac, и для решения я использовал правила карты (сопоставление типов данных).

3

Для этого нет конфигурации; Firebird 3 release notes only say:

COUNT() агрегатор теперь возвращает его результат, как BIGINT вместо INTEGER.

Вам необходимо либо явно применить подачу в ваших запросах, либо в вашем коде, либо посмотреть, может ли ваша библиотека доступа к данным явно запрашивать целое число, а не только динамический тип. Например, в Java-мире API JDBC имеет явный getInt, который будет работать для BIGINT, если значение соответствует 32-битовому целому числу.