powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
22 сообщений из 22, страница 1 из 1
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060104
sysdba22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начинаем тестировать ФБ4 и...

В firebird.conf для ФБ4 прописываем:

Код: sql
1.
2.
MaxIdentifierByteLength = 31
DataTypeCompatibility = 3.0



Берем архив базы с сервера ФБ 3 и восстанавливаем.

Подключаемся -- идут ошибки в нашей программе на длину поля.
Выполняем запрос на RDB$FIELDS для домена RDB$FIELD_NAME
получаем такие параметры:

Код: sql
1.
2.
RDB$FIELD_LENGTH	   = 252	
RDB$CHARACTER_LENGTH         = 63



Т.е. ничего к совместимости с 3.0 не привелось.

Вопрос: как пользоваться режимом совместимости с прежними версиями?
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060109
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22Вопрос: как пользоваться режимом совместимости с прежними версиями?

В данном случае - никак, обломись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060113
sysdba22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а для чего тогда вообще этот режим?
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060116
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для возвращаемых типов данных.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060117
sysdba22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в данном случае мне представляется логичным такое поведение сервера:

если установлены указанные выше параметры и восстанавливается бд из архива, то:

1) метаданные RDB$ таблиц создаются в соответствии с указанными параметрами.
т.е. длина идентификатора 31 символ.

2) при восстановлении, если в архиве нет идентификаторов длиннее (без учета
концевых пробелов), то процесс восстановления проходит без ошибок и
предупреждений.

3) если есть -- выдается сообщение об ошибке и процесс прекращается.

4) тоже самое и с новыми типами данных, если установлен режим совместимости
3.0 или 2.5. т.е. встретились данные новых типов -- ошибка. нет -- процесс проходит
без ошибок.


Указанное выше поведение позволит не только спокойно восстановить БД из 3.0
в 4.0 и продолжить работу с существующим софтом, но, и понизить режим
совместимости для БД, ранее созданной под новые метаданные 4.0.
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060118
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22
Вопрос: как пользоваться режимом совместимости с прежними версиями?
Так, как описано в документации ?
Может быть первые 8 букв в названии DataTypeCompatibility дадут понять, что это не имеет никакого отношения к длине идентификаторов ?
Откуда вообще такие идеи - о связи синего с тёплым ? :)

sysdba22
идут ошибки в нашей программе на длину поля
Дай угадаю - запросы к системным таблицам с персистентными полями ?
Ну так никто никогда никому не обещал, что системные таблицы не будут меняться. Будут.
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060119
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
06.04.2021 12:12, sysdba22 пишет:
> Подключаемся -- идут ошибки в нашей программе на длину поля.

это кривизна клиентской библиотеки доступа.
чем пользуетесь?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060120
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22
в данном случае мне представляется логичным такое поведение сервера:
Сначала нужно просто прочитать описание указанных параметров.
Тогда не будет возникать странных фантазий, не имеющих отношения к реальности. Надеюсь :)
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060124
sysdba22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ладно, просто оставлю это здесь:

авторДжон Росс, написавший первоначальную версию SimCity для Windows 3.x, рассказывал мне, что у него была случайная ошибка в SimCity, когда он читал память, которую только что освободил. Под Windows 3.x все работало прекрасно, потому что память никуда не уходила. Но вот что поразительно. При тестировании бета-версий Windows 95 обнаруживалось, что SimCity не работает. В Microsoft нашли ошику и добавили в Windows 95 специальный код, который проверял, не выполняется ли SimCity. При обнаружении SimCity выделение памяти переводилось в особый режим, в котором память не освобождалась сразу. Эта помешанность на обратной совместимости способствовала переходу пользователей на Windows 95.


никакой кривизны клиентских библиотек нет. для ORM надо больше информации, чем есть в RDB$ и она хранится в отдельных таблицах. естественно, что там был домен на 31 символ. мы конечно придумаем что делать с этим, но это задача не наивысшего приоритета, так что придется перенести тестирование ФБ4 куда нибудь на сентябрь.
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060126
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
06.04.2021 12:51, sysdba22 пишет:
> для ORM надо больше информации,

ой, всё! ©
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060127
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22Эта помешанность на обратной совместимости способствовала переходу пользователей на
Windows 95.

Это надо читать как "значительному повышению продаж Windows 95".

Не проблема, сколько ты готов заплатить чтобы режим совместимости Firebird работал так,
как ты хочешь?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060128
sysdba22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий

06.04.2021 12:51, sysdba22 пишет:
> для ORM надо больше информации,

ой, всё! ©


культура общения на русскоязычных форумах просто зашкаливает...

в качестве примера, как можно отвечать на вопросы и вести дискуссию:

https://stackoverflow.com/questions/66763171/does-firebird-support-infinity-as-float-value

PS: заранее предвижу вопрос "зачем тогда ходишь, если не нравится?". отвечаю: исключительно ради быстрой связи с непосредственными разработчиками.
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060130
sysdba22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не проблема, сколько ты готов заплатить чтобы режим совместимости Firebird работал так,
как ты хочешь?


Думаю, не только нам будет интересен режим совместимости "из коробки".
Если организовать сбор, я бы скинулся.
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060133
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22в качестве примера, как можно отвечать на вопросы и вести дискуссию:

Это плохой пример по двум причинам:
1. Формат СО - не форум, а склад готовых ответов на конкретные вопросы. Твой вопрос там
был бы просто удалён.
2. В том топике половина отвечающих это Марк, а вторая - присутствует на этом форуме.

sysdba22Если организовать сбор, я бы скинулся.

Ну так организуй. Заодно и выяснишь а нужно ли это кому-то кроме тебя.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060135
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22
так что придется перенести тестирование ФБ4 куда нибудь на сентябрь.

Сорян, что не по теме топика - Вы на классике FB3 остались или обратно супер вернули?
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060136
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22
там был домен на 31 символ. мы конечно придумаем что делать с этим

Дополнить предохранительным substring-ом соответствующие запросы?
И будет работать и там и там, КМК.
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060137
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F
Дополнить предохранительным substring-ом соответствующие запросы?
И будет работать и там и там, КМК.

YouTube Video
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060138
sysdba22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коваленко Дмитрий

Сорян, что не по теме топика - Вы на классике FB3 остались или обратно супер вернули?


на классике. и фб 4 тоже в режиме классик планируем ставить. мы так и не смогли даже приблизиться
к воссозданию ситуации с повреждением БД под супером. но, она происходила стабильно каждые 2-3 месяца.
База 260 Гб, количество пользователей 300, очень большой кэш -- на размер всей базы.

После перехода на классик, год уже, все работает нормально.

К сожалению, нет времени на точные замеры, но пользователи говорят, что по их субьективным ощущениям
в периоды пиковой загрузки программа стала работать быстрее...
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060139
sysdba22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я думаю, что в документации стоит отразить, что параметры в RDB$ таблицах не зависят от параметров в firebird.conf файле.
и точно указать место, где происходит проверка/усечение данных, чтобы разработчики систем могли четко представлять
где у них вылезет несоответствие новых и старых типов.

сейчас релиз ноты выглядят так:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Parameters to Restrict Length of Object Identifiers

Object identifiers in an ODS 13 database can be up to 63 characters in length, and the engine stores
them in UTF-8, not UNICODE_FSS as previously. Two new global or per-database parameters are
available if you need to restrict either the byte-length or the character-length of object names in
ODS 13 databases for some reason.

Longer object names are optional, of course. Reasons you might need to restrict their length could
include:

• Constraints imposed by the client language interface of existing applications, such as gpre or
Delphi
• In-house coding standards
• Interoperability for cross-database applications such as a third-party replication system or an
in-house system that uses multiple versions of Firebird

This is not an exhaustive list. It is the responsibility of the developer to test usage of longer object
names and establish whether length restriction is necessary.

Whether setting one or both parameters has exactly the same effect will depend on the characters
you use. Any non-ASCII character requires 2 bytes or more in UTF-8, so one cannot assume that
byte-length and character-length have a direct relationship in all situations.
The two settings are verified independently and if either constrains the length limit imposed by the
other, use of the longer identifier will be disallowed.

If you set either parameter globally, i.e. in firebird.conf, it will affect all databases,
including the security database. That has the potential to cause problems!

MaxIdentifierByteLength

Sets a limit for the number of bytes allowed in an object identifier. It is an integer, defaulting to 252
bytes, i.e., 63 characters * 4, 4 being the maximum number of bytes for each character.

To set it to the limit in previous Firebird versions, use 31.

MaxIdentifierCharLength

Sets a limit for the number of characters allowed in an object identifier. It is an integer, defaulting
to 63, the new limit implemented in Firebird 4.
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060159
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22
я думаю, что в документации стоит отразить, что параметры в RDB$ таблицах не зависят от параметров в firebird.conf файле.
В таблицах нет параметров. Ну да ладно.
А что ещё написать ? Что время заката солнца не зависит от выставленной таймзоны - написать ?

sysdba22
сейчас релиз ноты выглядят так:
И где там хотя бы полнамёка на то, что MaxIdentifierXXXLength как-то связано с метаданными системных таблиц ?

Вы себе что-то придумали и требуете опровержение этого несуществующего в документации отразить.
Я бы ещё понял, если бы в доке была неоднозначность какая-то.
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060164
sysdba22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор# Set to 31 to limit as Firebird 3 and previous versions.

По разному можно эту строку из .conf файла понимать.
Например, что обеспечивается совместимость по длинам
идентификаторов с версией Firebird 3.
...
Рейтинг: 0 / 0
Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
    #40060166
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22Например, что обеспечивается совместимость по длинам идентификаторов с версией Firebird 3.

Так она и обеспечивается. Но какое отношение это имеет к полям системных таблиц?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как вернуть длину идентификаторов в 31 символ в FB 4 RC 1 ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]