Счетчик в Firebird 3.0 bigint по сравнению с целым числом в Firebird 2.5

В моей системе после миграции с Firebird 2.5 на 3.0 многие отчеты и другие функции начали выдавать проблемы, утверждая, что ожидаемое значение — Integer, а текущее — LargeInt. Я взглянул и увидел, что некоторые поиски со счетчиком в 3.0 возвращают столбец bigInt, а в 2.5 возвращают целочисленный столбец.

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

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


person sounobre    schedule 08.12.2016    source источник


Ответы (2)


Для него нет конфигурации; только примечания к выпуску Firebird 3 сказать:

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

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

person Mark Rotteveel    schedule 08.12.2016

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

person sounobre    schedule 08.12.2016