Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / О замене UDF ROUND на встроенную ROUND / 25 сообщений из 36, страница 1 из 2
20.06.2018, 08:55
    #39662828
vvkhr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
Давным давно (с 1997 года существует база)

В какой то период (наверное при Интербейзе 5.6) были написаны UDF
И как на грех одну назвал ROUND.

Так она теперь и работает. И используется в 117 сторед процедурах.
Но вот хочется ее убрать и использовать встроенную в Птицу ф-цию ROUND
Параметры у встроенной и у UDF совпадают.
IBExpert показывает ее в процедурах как встроенную.
Но если я пытаюсь отресторить базу на сервер где нет моей UDF библиотеки
то получаю сообщение, что отсутствует ф-ция ROUND

Подскажите пожалуйста порядок как пофиксить это правильно.
...
Рейтинг: 0 / 0
20.06.2018, 09:06
    #39662833
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
vvkhr, удалить из базы информацию о регистрации UDF функции, перекомпилировать все зависимые ХП, триггеры и ограничения.
...
Рейтинг: 0 / 0
20.06.2018, 09:10
    #39662836
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
vvkhr,

в IBE комментируешь тело всех зависимых процедур. Удаляешь определение UDF и убираешь комментарий тела процедур и перекомпилируешь процедуры.
...
Рейтинг: 0 / 0
20.06.2018, 09:11
    #39662837
vvkhr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
Дык как удалить то.
При удалении получаю, что куча зависимостей от нее.
117 процедур и одна таблица
...
Рейтинг: 0 / 0
20.06.2018, 09:12
    #39662839
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
vvkhr,

значит придётся делать ещё ALTER для вычисляемого поля и на его место делать временную заглушку
...
Рейтинг: 0 / 0
20.06.2018, 09:29
    #39662849
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
Симонов Денисvvkhr,

в IBE комментируешь тело всех зависимых процедур. Удаляешь определение UDF и убираешь комментарий тела процедур и перекомпилируешь процедуры.IBE разве не умеет сам это делать для зависимых объектов ?
...
Рейтинг: 0 / 0
20.06.2018, 09:35
    #39662854
vvkhr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
Получилось в следующем порядке
В IBExpert

1. Деактивировал все процедуры
2. В таблице изменил вычислимое поле
3. Удалил встроенную функцию
4. Активировал все процедуры
5. Вернул описание вычислимого поля

Всем спасибо.
Интересно еще не изменятся ли результаты этих процедур.
Всего можно ожидать от моего РОУНДА и от встроенного
...
Рейтинг: 0 / 0
20.06.2018, 09:38
    #39662860
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
vvkhrИнтересно еще не изменятся ли результаты этих процедур.
Всего можно ожидать от моего РОУНДА и от встроенногоЗадекларируй свой round под другим именем.
Сделай цикл на 10млн значений (хотя бы) с нужным тебе шагом и разрядностью и сравнивай округление своего и встроенного round.
Сравнивай, есс-но, с учётом погрешности.
...
Рейтинг: 0 / 0
20.06.2018, 09:50
    #39662865
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
hvlad,

увы не умеет. Надо бы пожелать :)
...
Рейтинг: 0 / 0
20.06.2018, 10:00
    #39662871
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
Симонов Денис,

Зато умеет все сразу. Во многих случаях достаточно.
...
Рейтинг: 0 / 0
20.06.2018, 11:11
    #39662915
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
vvkhrбыли написаны UDF
И как на грех одну назвал ROUND
Наоборот очень повезло.
Особенно, что касается использования в текстах запросов из клиента.
...
Рейтинг: 0 / 0
20.06.2018, 11:13
    #39662916
vvkhr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
YuRock,

Поясните мысль. До меня что то не дошло
...
Рейтинг: 0 / 0
20.06.2018, 11:57
    #39662943
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
vvkhr,

Переписывать ничего не надо. Выискивать использование.
...
Рейтинг: 0 / 0
20.06.2018, 12:02
    #39662947
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
20.06.2018 11:57, YuRock пишет:
> Переписывать ничего не надо. Выискивать использование.

без перекомпиляции blr не катит.
в blr ссылка на UDF.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.06.2018, 12:10
    #39662956
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
Мимопроходящийв blr ссылка на UDF
YuRockОсобенно, что касается использования в текстах запросов из клиента
...
Рейтинг: 0 / 0
21.06.2018, 10:30
    #39663435
__Avenger__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
А вариант выгрузить структуру в скрипт, а затем перелить данные не предлагать?
...
Рейтинг: 0 / 0
21.06.2018, 10:44
    #39663441
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
__Avenger__,

на самом деле этот способ может быть очень медленным для больших БД.
Для ускорения заливки перед самой заливкой надо как минимум деактивировать триггеры, индексы и желательно на время удалять ограничения. Не самое простое дело
...
Рейтинг: 0 / 0
21.06.2018, 10:56
    #39663448
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
vvkhr,

кстати, я тут добавлю, что
"то получаю сообщение, что отсутствует ф-ция ROUND"

фокус в том, что это warning, предупреждение, а не ошибка. Достаточно было сохранить лог рестора, а после рестора перекомпилировать все те объекты, для которых показывался warning по отсутствию udf.
...
Рейтинг: 0 / 0
21.06.2018, 11:09
    #39663460
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
21.06.2018 10:56, kdv пишет:
> Достаточно было сохранить лог рестора, а после рестора перекомпилировать все те объекты, для которых показывался warning по отсутствию udf.

UDF'ы имеют более высокий приоритет чем SDF.
если в RDB$FUNCTIONS задекларирована функция Round,
по сервер пытается воткнуть именно её, а не одноимённою SDF.
и любая перекомпиляция обломится.
UDF надо сперва грохнуть.
а грохнуть он не может, потому что зависимости.
а зависимости убрать - закомментировать текст соответствующих объектов.
ну и т.д.

зы: сам сейчас танцую с бубном на этом минном поле...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.06.2018, 11:14
    #39663467
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
Мимопроходящий,

да это тот ещё труд. Сам намучился когда с 1.5 на 2.5 переходил. Задолбался UDF выпиливать. Зато с 2.5 на 3.0 перешёл очень быстро.
Могу пожелать разве что терпения.
...
Рейтинг: 0 / 0
22.06.2018, 10:17
    #39663981
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
А почему нельзя завести базу с UDF, а потом постепенно выпиливать ее применения? В конце концов, если UDF заброшенная и не имеет нужной разрядности, можно же сделать либу с заглушками.
...
Рейтинг: 0 / 0
22.06.2018, 10:25
    #39663988
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
Василий 2,

так и делал. Главное не забивать на это. А то ведь можно бекап\рестор прошёл и успокоился. Чем меньше UDF тем лучше.
...
Рейтинг: 0 / 0
22.06.2018, 19:46
    #39664442
Старый плюшевый мишка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
Мимопроходящийзы: сам сейчас танцую с бубном на этом минном поле...


Мой телепатический локатор вангует в будущем ещё более эффектные танцы вокруг моих многочисленных

update тили-тили set a=a+10, b=a*c where трали-вали

твердо веря, что а в a*c уже на 10 больше, чем на момент выполнения оператора. Рассеяно хаотически в разные годы и в PSQL и в приложении, обнаруживать себя будет, сталбыть, тоже хаотически и в виде хрени в данных, которая будет всплывать через месяц после образования, когда непонятка будет замечена.
...
Рейтинг: 0 / 0
25.06.2018, 10:12
    #39665095
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
Симонов ДенисВасилий 2,

так и делал. Главное не забивать на это. А то ведь можно бекап\рестор прошёл и успокоился. Чем меньше UDF тем лучше.
К сожалению (или к счастью? Инструмент-то отличный), совсем без UDF не всегда удается обойтись. Разве что если когда-нибудь в FB встроят движок скриптов, умеющий взаимодействовать с системой :)
...
Рейтинг: 0 / 0
25.06.2018, 10:30
    #39665126
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О замене UDF ROUND на встроенную ROUND
Василий 2,

прежде чем писать UDF/UDR надо посмотреть
- можно ли использовать встроенные функции
- можно ли написать PSQL функцию устраивающую по быстродействию (для Firebird 3.0)
- можно ли обойтись возможностями клиентского приложения
- рассмотреть возможность использования внешних утилит/сервисов

И только если без UDF/UDR никак начинать писать её.
В общем-то правила эти придумал не я. Прочитал их ещё у Тома Кайта (автора книг по Oracle) и переформулировал их под Firebird.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / О замене UDF ROUND на встроенную ROUND / 25 сообщений из 36, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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