Bug 55673 - Некорректная настройка fbintl по умолчанию в firebird
Summary: Некорректная настройка fbintl по умолчанию в firebird
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: firebird-server (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Anton Farygin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-08-20 19:22 MSK by Kostevich Arseniy
Modified: 2025-09-15 16:10 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kostevich Arseniy 2025-08-20 19:22:32 MSK
Версия пакета:
firebird-server-4.0.5-alt2

Платформа(Обновлена до Sisyphus):
Alt Server 11.0 x86_64

Шаги для воспроизведения:
1) Создать базу данных с кодировкой win1251
# (echo "CREATE DATABASE '/var/lib/firebird/testdb.fdb' page_size 8192"; echo "user 'SYSDBA' password 'masterkey'"; echo "DEFAULT CHARACTER SET WIN1251;";) | isql-fb
2) Создать пользователя
# (echo "create user SYSDBA password 'masterkey';"; echo 'commit;') | isql-fb -user sysdba /var/lib/firebird/testdb.fdb
3) Создать таблицу:
 isql-fb -user sysdba /var/lib/firebird/testdb.fdb 
Database: /var/lib/firebird/testdb.fdb, User: SYSDBA
SQL> CREATE TABLE MyTable (
CON>     id INT NOT NULL PRIMARY KEY,
CON>     txt VARCHAR(32),
CON>     ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
CON> );

Ожидаемый результат:
Таблица успешно создана

Фактический результат:
Ошибка:
Statement failed, SQLSTATE = 2C000
unsuccessful metadata update
-MYTABLE
-CHARACTER SET WIN1251 is not installed

Кодировки настраиваются в /etc/firebird/fbintl.conf, по умолчанию там есть:
intl_module = builtin {
    icu_versions = default
}

intl_module = fbintl {
    filename = $(this)/fbintl
    icu_versions = default
}
...
charset = WIN1251 {
    intl_module = fbintl
    collation = WIN1251
    collation = WIN1251_UNICODE
    collation = PXW_CYRL
    collation = WIN1251_UA
}  

Проблема в строке filename = $(this)/fbintl, данная настройка указывает на /etc/firebird/fbintl.so, но по умолчанию в /etc/firebird лежит libfbintl.so
lrwxrwxrwx  1 root root    39 окт 10  2024 libfbintl.so -> ../../usr/lib64/firebird/intl/fbintl.so

Если изменить на filename = $(this)/libfbintl, то ошибка воспроизводится(Не знаю почему, возможно конфигурация не поддерживает симлинки. Либо макрос $(this) указывает куда-то в другое место, а должен на директорию с конфигами согласно https://firebirdsql.org/file/documentation/release_notes/html/en/3_0/rlsnotes30.html).

Если изменить на filename = /usr/lib64/firebird/intl/fbintl, то ошибка не воспроизводится.
Comment 1 Anton Farygin 2025-09-15 14:30:47 MSK
В дальнейшем, пожалуйста, когда заводите ошибку делайте так что бы примеры можно было легко скопировать.

в данном случае лучше было бы написать вот так:
SQL> CREATE TABLE MyTable ( id INT NOT NULL PRIMARY KEY,txt VARCHAR(32),ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
Comment 2 Repository Robot 2025-09-15 16:10:05 MSK
firebird-4.0.6-alt1 -> sisyphus:

Mon Sep 15 2025 Anton Farygin <rider@altlinux.com> 4.0.6-alt1
- 4.0.5 -> 4.0.6
- added an explicit dependency on libicu to prevent startup errors (closes: #55658)
- fixed the incorrect path to the intl module in the default fbintl config file (closes: #55673)