powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос к тем, кто знаком с исходниками
21 сообщений из 21, страница 1 из 1
Вопрос к тем, кто знаком с исходниками
    #40028511
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно ли (теоретически и насколько трудоемко) из gbak сделать конветор чарсетов.

Чтобы на входе он получал FBK, а на выходе FDB. И при этом менял один указанный чарсет на другой указанный чарсет с нужными преобразованиями строк.

Меня, конечно, больше волнует вариант WIN1251 -> UTF8. Т.е. есть у меня архив FBK. Там конечно не только WIN1251, но и OCTETS встречается, может ещё что-нибудь. Я запускаю такой конвертор и у меня выходит FDB, где все строки WIN1251 заменены на UTF8.

Как понимаю, какие-то преобразования/фиксы gbak всё-таки делает, есть ведь опция "Fix malformed UNICODE_FSS" или хотя бы та же ерунда с COMPUTED BY полями. Может за компанию и чарсет можно сменить?
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028514
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теоретически это возможно. На практике быстрее будет перегнать данные через IBDataPump с
правильной настройкой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028515
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Теоретически это возможно. На практике быстрее будет перегнать данные через IBDataPump с
правильной настройкой.


Речь о конвертации некоторого кол-ва баз отличающихся структурой в автоматическом режиме (молча, без вопросов, настроек).
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028521
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory
все строки WIN1251 заменены на UTF8
Строки длиннее 8к символов приведут к невосстановимому состоянию.

Хотя сама идея как будто неплоха, может подобный фичреквест уже есть в трекере?
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028616
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory,

ну, само оно конвертировать из одного чарсета в другой не будет никогда, это я ответственно заявляю.
Потому что подобная конвертация - это задача разработчика. То есть, он должен взять скрипт базы, проверить его на все длины строк, на левые чарсеты, потом указать у скрипта utf8, создать базу, после чего проверить работу приложения с этой базой, ну а уже потом сконвертировать старую базу в новую ибпамп-ом.
www.ibase.ru/unicode_faq/

Это вам там хочется "одной кнопкой" win1251 поменять на utf8. А есть люди с базами, где в базе штук 5 разных чарсетов, и они еще хотя туда воткнуть uft8, например. И другие варианты тоже есть. И автоматизировать все варианты увы, никак не получится.
Ivan_PisarevskyХотя сама идея как будто неплоха, может подобный фичреквест уже есть в трекере?
идея хреновая, надеюсь что если даже будет в трекере, ее забракуют.
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028632
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
идея хреновая,
Сказал, как отрезал. :) Что такого деструктивного в доп ключе к гбак-у в котором будет пара чарсетов (src-dst) если попался исходный, то попытаться записать в чарсет назначения? будет облом, значит облом ресторь без этого ключа. трогать при этом третий или пятый чарсет не нужно.
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028652
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, как (какие) данные он должен конвертить -
поля, с каким заданным чарсетом? А None?

В общем, частно-странная проблема.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028734
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Интересно, как (какие) данные он должен конвертить -
поля, с каким заданным чарсетом?
все строковые и блоб поля с заданным в ключе черсетом.
Гаджимурадов Рустам
А None?
Не трогать, как и octets.
Гаджимурадов Рустам
В общем, частно-странная проблема.
Проблема, как проблема, отчего б ее не обсудить?

Когда мне понадобилось, конвертил через скрипт и переливку(как выше советовали), особых проблем не было.
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028747
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Проблема, как проблема, отчего б ее не обсудить?

Обсудить-то можно. Сомнительно, что гбак нужно курочить.
Хотя какая-то частная версия с ключом может и не помешала
бы (хотя опять же сомнительно с т.з. вложений времени).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028760
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

это не так легко сделать как кажется. Ну допустим в таблицах поля конвертировать можно.
Но есть ещё домены с заданным чарсетом. Их молча заменять?

А ещё строковые переменные и домены могут использоваться в процедурах, функциях, триггерах.
В gbak их код не перекомпилируется. Так что предвижу там проблемы
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028779
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_Pisarevsky
Строки длиннее 8к символов приведут к невосстановимому состоянию.


Будет ошибка. Сейчас тоже выдает (писал в другой ветке):

Код: plaintext
1.
2.
3.
4.
5.
This operation is not defined for system tables.
     unsuccessful metadata update.
     new record size of XXX bytes is too big.
     TABLE XXX.
     Exiting before completion due to errors.

Так что эта проверка уже есть в GBAK, ничего нового добавлять не нужно.

Ivan_Pisarevsky

Хотя сама идея как будто неплоха, может подобный фичреквест уже есть в трекере?


Ничего в этом не понимаю. А реквесты они бесплатные или там заказчик-бюджет-сроки?

Ivan_Pisarevsky
все строковые и блоб поля с заданным в ключе черсетом.


Да, да! Блобы тоже, про блобы я забыл! А ещё параметры процедур, функций и UDF.

Симонов Денис

это не так легко сделать как кажется. Ну допустим в таблицах поля конвертировать можно.
Но есть ещё домены с заданным чарсетом. Их молча заменять?


Как понимаю, таблицы без доменов не бывают. Это домены бывают или системные или пользовательские.

Симонов Денис

А ещё строковые переменные и домены могут использоваться в процедурах, функциях, триггерах.
В gbak их код не перекомпилируется. Так что предвижу там проблемы


А сейчас дефолтный чарсет БД ведь влияет на чарсеты внутренних переменных в процедурах. Мы меняем чарсет БД, процедуры ведь сами не перекомпилируются.
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028804
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> В gbak их код не перекомпилируется.

Чего это?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028809
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

исходный код процедур копируется и их BLR, компиляция не просходит.
Если бы происходила компиляция, то невозможно было бы удалить сорцы процедур, чтобы бекап оставался восстанавливаемый.
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028891
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это вопрос как закодить.
Хотя гбак тут ИМХО трогать не надо (если исходник
не обязательно "с неправильным чарсетом").
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40028941
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
это не так легко сделать как кажется.
Симонов Денис
ак что предвижу там проблемы
Вообще-то про трудоемкость я ни слова не сказал. Это разве что Влад или ДЕ сказать может.
ggreggory
А реквесты они бесплатные или там заказчик-бюджет-сроки?
Без денег реализация может сильно затянуться. :) Если занести деньжат, то вполне себе можно заиметь утилиту которая из гбк файла замутит нечто с другим чарсетом. Исходники гбак в открытом доступе.
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40029083
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17.12.2020 16:37, Симонов Денис пишет:
> исходный код процедур копируется и их BLR, компиляция не просходит.

имеет место быть невосстановимый бекап из-за "план кеннот би юзет".
так что, тезис не совсем корректен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40029086
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

так это ошибка не из-за того, что компиляция происходит. Просто BLR на корректность проверяется.
База данных с удалёнными исходниками ХП, вполне себе восстанавливается
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40056918
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока занимался темой нашел несколько записей в трекере:

http://tracker.firebirdsql.org/browse/CORE-4661

http://tracker.firebirdsql.org/browse/CORE-5963

От своего предложения отказываюсь. Как оказалось всё совсем не сложно сделать клиентским приложением. Работает быстро, я доволен. Бонусом будет то, что процессом конвертации можно управлять. Например, в некоторых базах у меня оказались UDF без исходников, которые никак на UTF8 не переделать. Когда ты сам управляешь конвертором, то можешь выбрать - для каких UDF менять кодировку, а для каких - нет. Со встроенной процедурой конвертации такое бы не прокатило.
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40056930
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, пока делал наткнулся на неприятный глюк. Иногда измененная кодировка строковых полей не подхватывалась создаваемыми после представлениями и computed by полями. Вероятность появления глюка низкая, системы не нашел. Вылечилось после того как понавтыкал повсюду reconnect. Видать метаданные как-то недо-обновляются. Superserver 3.0.7.
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40057009
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory,

у суперсервера 3.0 кэш метаданных раздельный по коннектам. как у классика и суперклассика. Не так как в суперсервер 2.5 (общий).
...
Рейтинг: 0 / 0
Вопрос к тем, кто знаком с исходниками
    #40057027
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
ggreggory,

у суперсервера 3.0 кэш метаданных раздельный по коннектам. как у классика и суперклассика. Не так как в суперсервер 2.5 (общий).


Конвертор работает одним локальным коннектом. Много DDL:
1) убирает ключи
2) чистит тела триггеров и процедур
3) меняет character set у строковых доменов
4) делает update содержимого строковых blob
5) пересоздает строковые computed by
6) пересоздает UDF со строковыми параметрами
7) пересоздает view
8) возвращает ключи
9) возвращает тела триггеров и процедур

Так вот на шаге 5) и 7) эпизодически появляются поля на WIN1251, коих уже не должно быть.... И не на каждой базе.... Делаешь реконнект после каждого шага - глюк уходит. Тесты были на супере. На классике или эмебедед не пробовал, других забот хватает, починилось и хорошо.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос к тем, кто знаком с исходниками
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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