Quantcast
Channel: SQL.ru: Firebird, InterBase
Viewing all articles
Browse latest Browse all 1677

Алиасы полей (русскими буквами) в Firebird 3.0

$
0
0
Доброго всем времени суток, уважаемые.

Столкнулся со следующей проблемой при переходе с Firebird 2.5 на Firebird 3.0
В частности, в 3.0 стало нельзя указывать алиасы к полям русскими буквами более чем из 16 символов, тогда как в 2.5 это было возможно (32 русских ANSI-символа на ура работали).

Вот такой запрос выполняю под FB2.5, все работает прекрасно:
SELECT
    'Field Value' AS "Алиас состоящий из 30 символов"
FROM RDB$DATABASE


беру этот же запрос выполняю под 3.0 и получаю:
+ Текст ошибки

Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
string right truncation.
expected length 31, actual 30.


Если в алиасе изменить раскладку, то запрос выполняется:
+ Запрос и результат

SELECT
    'Field Value' AS "Fkbfc cjcnjzobq bp 30 cbvdjkjd"
FROM RDB$DATABASE


Результат:
Картинка с другого сайта.


Заметил такую особенность в 3.0:
Всего под алиас выделяется 32 байта (максимальное количество символов при этом латинских 31, кириллица - 15), латинские символы в алиасе занимают по одному байту, а кириллица по два, тоесть можно написать, например, так:
SELECT
    'Field Value' AS "abcdefghigklmnopqrstuvwxyzЖЙЫ"
FROM RDB$DATABASE

Этот запрос не выполняется, хотя общая длина символов 29, если принять ту арифметику что я писал чуть выше, то получается 26 + 2*3 = 32.
Если же мы уберем любую одну латинскую букву, то запрос выполняется.

Кто что думает по этому поводу?

Viewing all articles
Browse latest Browse all 1677

Trending Articles