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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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