powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Internal и external function с одинаковым названием
71 сообщений из 71, показаны все 3 страниц
Internal и external function с одинаковым названием
    #39695269
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB 3.0. В базе есть UDF с именем FORMAT_DATE. И я создал FUNCTION с именем FORMAT_DATE. Теперь я не могу сделать вызов UDF, так как она перекрывается обычной функцией. Надо ли идти с этим в трекер?
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39695270
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более того, я не могу удалить обычную функцию, так как на нее повесились все зависимости от UDF - по факту же она нигде не используется.

Создал CORE-5905 .
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39695315
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

Internal function в данном случае термин не верный. Это походу IBExpert так смутил своими названиями. В реальности это PSQL функция. А Internal function это те функции которые встроены в FB, например SUBSTRING.

Теперь по поводу external function. Их на самом деле 2 вида: новые UDR и старые (DECLARE EXTERNAL FUNCTION) или UDF (можно ещё назвать legacy external function).

Ну это я так поворчал по поводу термином. По поводу бага полностью согласен. Одноимённые legacy external function/UDF и PSQL/UDR функции надо бы запретить создавать.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39695687
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

либо таки наконец ввести namespaces

UDF$FORMAT_DATE, UDR$FORMAT_DATE, UDSQL$FORMAT_DATE
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39695693
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

в топку. Если уж и вводить то схемы. Нужны неймспейсы делай PSQL пакеты.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39695696
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

ну так введите имплицитный пакет Legacy куда и складывайте все UDF

и с UDR аналогично

чтобы в ядре (в зависимостях, в планах, в BLR) было полное имя объекта.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39695702
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

легаси нельзя в пакетах размещать, у них синтаксис совсем другой. А обычные UDR ты и сам можешь в пакете поместить.

И опять же авторну так введите имплицитный пакет можно подумать что я этим занимаюсь
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39695812
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно подумать, что ты единственный читаешь

ты защищаешь некую коллективную точку зрения, некотое коллективнoе статус-кво,

которое привело к проблеме "забыли заранее повесить заплатку" и может быть ещё приведет

я его критикую, не тебя лично, а коллективное
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696004
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochты защищаешь некую коллективную точку зрения, некотое коллективнoе статус-кво,

я никого не защищаю. У меня есть своё мнение на этот счёт. И я полностью согласен с ТС, что позволять создавать одноименные UDF и PSQL функции это баг. Да и команда разработчиков тоже согласна.

А вот твоё предложение не поддерживаю.

И кстати в 4.0 Legacy UDF объявлены depricated. И как-то особо стараться чтобы улучшать их возможности (ну например позволять размещать в пакетах) уже не будут. Поэтому если есть ещё необходимые вам самописные UDF пора задуматься над тем чтобы переписать их на UDR.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696148
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо просто будет сделать бридж - UDR реализующую UDF

Замена простых решений сверх-сложными, просто ради замены....

После всех фанфар, что UDR нужна, чтобы огнать и писать Оракл и писать плагины на Java - вот UDR давно есть, а плагинов на Java нет.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696149
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochчтобы огнать и писать Оракл
догнать и перегнать
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696161
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

вообще плагин для написания UDR на Java есть (Beta версия). Но Адриано там так намудрил, что использовать его сложновато. Я уж лучше на Delphi UDR напишу.

Чтобы догнать и перегнать Оракл одних Java UDR явно не достаточно
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696186
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисНо Адриано там так намудрил

если бы так было, кто-нибудь бы уже написал "хорошо и просто", тот же Марк например.

Давай посмотрим, сколько у нас Delphi-библиотек на тупом неправильном устаревшем API тянущемся с прошлого века
* FIBC и её потомки IBX & FIB+
* IBO
* UIB
плюс к ним - универсалы
* BDE
* DBX
* Zeos
* UniDAC
* AnyDAC

А сколько у нас Delphi-библиотек с крутейшим гибким удобным быстрым и современным API ?

И дело тут явно не в десятках лет запасов. Десятки лет - это например рассыпавшийся от старости BDE.
А UIB был начат с чистого листа несмотря на наличие к тому времени других библиотек.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696209
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochсколько у нас Delphi-библиотек на тупом неправильном устаревшем API тянущемся с прошлого века

это кто тебе сказал что это API тупое и устаревшее? Плюнь ему в глаз.
То что там есть определённые ограничения не делают его тупым. Или ты предлагаешь авторам сиих библиотек забить на совместимость с Firebird < 3.0.

FIB+ - сдох и не поддерживается. Кто же по твоему туда новый API будет писать.
IBX - глубоко плевать на Firebird. Он на Interbase ориентирован.
UIB - тоже труп по большому счёту. Тем не менее в последних версиях зачатки нового API там есть.
BDE - ещё один труп.
DBX - этот почти труп. По крайней мере Embercadero переключается на FireDac.
Zeos - труп.
IB Object - понятия не имею что у них там в последних версиях. Продукт коммерческий у меня его нет.

UniDAC, FireDAC скорее всего подтянутся и добавят поддержку нового API со временем.
IBX2 полностью поддерживает новое и старое API.

И это ты ещё не брал в рассмотрение не Delphi компоненты.

Тот же PDO для пыха тоже на старом API. В прочем там ситуация довольно плачевная. Его особо не поддерживают.

Просто в 3.0 новое API по большому счёту для клиентских приложений не даёт ничего нового. А вот UDR другое дело.
А вот в 4.0 это уже не так. Один Batch API уже много стоит.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696223
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисПросто в 3.0 новое API по большому счёту для клиентских приложений не даёт ничего нового.
А вот в 4.0 это уже не так. Один Batch API уже много стоит.

Он стоит меньше, чем кажется на первый взгляд.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696230
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

так там много чего ещё есть. Те же самые длинные имена объектов. Вроде новую XSQLVAR не стали делать.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696234
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисэто API тупое .... там есть определённые ограничения

тогда зачем было создавать резко отличное API вместо расшиваиня этих "определенных" - т.е. немногочисленных и локализованых - узких мест?

Симонов Денисэто API .... устаревшее?
Симонов Денисзабить на совместимость с Firebird < 3.0.

когда выходило последнее обновление FB 2.1.x ? а почему?
когда выйдет последнее обновление FB 2.5.x ?

> IBX - глубоко плевать на Firebird. Он на Interbase ориентирован.

В том числе IBX/Lazarus ?

Но речь то не о том совсершенно. Ты уводишь разговор в сторону.
Я говорил про написание новых библиотек, поэтому и считал их количество.
Я даже специально подчеркнул, что UIB был написан несмотря на уже существующую пачку библиотек.

А ты переводишь разговор на модификацию старых - не о том речь, пксть они все хоть умрут как BDE!
Где же НОВЫЕ библиотеки, изначально строящиеся вокруг крутого и прогрессивного ОО-API ?
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696238
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисВроде новую XSQLVAR не стали делать.

Я не стал её делать, поскольку особого смысла не вижу, а у остальных и вообще нет ни
времени ни желания. А так скопировать определение XSQLVAR версии 2 с интербейзовских
заголовков и подправить пару внутренних классов для её распознавания - работы на пару дней.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696239
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochтогда зачем было создавать резко отличное API вместо расшиваиня этих "определенных" - т.е.
немногочисленных и локализованых - узких мест?

Это новое API изначально создавалось для использования плагинами, которым нужна была
единая точка доступа к функциям движка. Потом его внезапно (и преждевременно по моему
мнению) решили сделать и клиентским тоже.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696241
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
немного оффтопика

Симонов ДенисZeos - труп.

я тоже так думал, вспоминая агонию версий 6.9.9.9.9.9....
но народ в форуме Delphi говорит, что сейчас проект ожил и активно пилится.

Симонов ДенисIBX2 полностью поддерживает новое и старое API.

Интересно, не знал про него. Он правда до релиза ещё ХЗ когда дорастёт, но пусть будут 100 цветов.

Симонов ДенисИ это ты ещё не брал в рассмотрение не Delphi компоненты.
Ну ты сам про Delphi напомнил. Впрочем, можешь и про остальные сказать.

JDBC - wire protocol, он вообще в основном режиме от fbclient.dll не зависит.
.NET Provider кажется так же.

Симонов ДенисПросто в 3.0 новое API по большому счёту для клиентских приложений не даёт ничего нового.
Ч.т.д.

Симонов ДенисА вот UDR другое дело.
....теоретически.

На практике же дополнить функционал написанием UDF намного проще.
И простота эта - сама по себе достоинство.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696243
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЭто новое API изначально создавалось для использования плагинами

Что само по себе уже забавно.
Потому что тут требуется сразу решать, на каких языках будут писаться плагины?

C++ ? тогда не надо городить как-бы-COM-но-не-совсем.
Делайте обычные абстрактные классы C++

Кросс-языковый? тогда берите стандартную библиотеку, с которыми известно как работать из разных языков. Например MS-COM и XPCOM. Взаимодействием COM<->.Net например сама Майкрософт занимается, почему же это было не использовать?

Но это якобы будет на несколько процентов медленнее.
В результате получили произведение искусства, которое чужеродное и для C++ и для остальных языков. Но зато все никем ненаписанные плагины работают несколько быстрее.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696248
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovединая точка доступа к функциям движка.

Кстати, а насколько этот доступ безопасен? ведь по идее чем глубже залезть - тем больше можно разломать.

Вот обычный UDF - куда казалось бы примитивнее, можно писать не приходя в сознание и примеров кругом полно.
И все равно люди умудряются накосячить и с конвенциями вызова и с FREE_IT.

Если чайник начнёт писать UDR-плагин по такому же принципу, как эти горе-UDF, собрать вместе несколько отрывков кода с разных форумов, а потом "трясти", менять тут и там наугад, пока плагин не подключиться - насколько негативное влияние на стабильность работы движка будет больше или меньше сравнительно с аналогичными UDF ?
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696290
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

ты UDR то хоть щупал прежде чем говорить?

В UDF ты не можешь нормальными способами:
1. Получить контекст транзакции/соединения
2. Обработать исключение и выбросить его в стандартный для firebird статус вектор
3. Контролировать NULL во входных параметров. Точнее можно но через жопу
4. Писать хранимые процедуры и триггеры

Arioch насколько негативное влияние на стабильность работы движка будет больше или меньше сравнительно с аналогичными UDF ?

точно так же как и на UDF. В память движка везде гадится одинаково.

>> C++ ? тогда не надо городить как-бы-COM-но-не-совсем.

COM за пределами Windows нет.

>> Делайте обычные абстрактные классы C++

Изначально так и сделали, но на FPC что-то пошло не так.
Кроме того, есть ещё C.

>> В результате получили произведение искусства, которое чужеродное и для C++ и для остальных языков.

Да неужели? Ты хоть смотрел что этот самый CLOOP генерирует? Да прослойка несколько толще чем чистый виртуальный класс, но никакой чужеродности там нет.

>>> В том числе IBX/Lazarus ?

IBX for Lazarus это немного другой IBX. И там кстати весьма вероятно новый API прикрутят.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696322
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис2. Обработать исключение и выбросить его в стандартный для firebird статус вектор

В UDR эта возможность тоже сильно ограничена. Фактически - до одного-единственного кода
isc_random.

Симонов ДенисCOM за пределами Windows нет.
COM+ и OLE Automation с их фабриками классов и регистрацией в едином реестре - нет (из
коробки), только сторонние реализации, например, от Мозиллы. COM как Common Object Model
(т.е. формат объекта с VMT) - есть, причём полностью совместимый во все стороны.

Симонов ДенисТы хоть смотрел что этот самый CLOOP генерирует?
Структуры указателей на обычные функции с дополнительным параметром он генерирует.
Сурпрайз, но от COM это отличается только наколенной реализацией. И не сурпрайз, что к
другим языкам он прикручивается точно через то же отверстие, что и обычный COM, только хуже.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696345
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисВ UDF ты не можешь нормальными способами:

в скольких процентах случаев это реально нужно?

Ariochпростота [UDF] - сама по себе достоинство.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696359
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисCOM за пределами Windows нет.
AriochНапример MS-COM и XPCOM

Кроме того, Firebird-типа-COM тоже не было за пределами Windows, но сверх того не было и в пределах.

Впрочем, я не просто так написл "например". Были и SOM и много ещё чего.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696365
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВ UDR эта возможность тоже сильно ограничена. Фактически - до одного-единственного кода
isc_random.

Но это намного лучше, чем возвращать спецзначение из UDF.

Dimitry SibiryakovСтруктуры указателей на обычные функции с дополнительным параметром он генерирует.

ну это не к тебе вопрос был. Ты то по поводу клопа в своё время Адриано плешь проел. А вот Arioch толком не смотрел, но рассуждает.

Arioch,

UDR кажутся сложными только на первый взгляд. Вся сложность там только в том что необходим повторяющийся кода для фабрик процедур/функций/триггеров. В C++ хитро выкрутились через boost с шаблонами. Правда понимание кода стразу падает, ибо подробности скрыты.

В Delphi такое не прокатывает и надо писать ручками. Хотя часть вещей тоже можно упростить, например фабрики сделать тоже через шаблоны. Но вот структуры для маппинга входных и выходных сообщений всё-таки писать придётся в любом случае, если ты конечно не самурай который оперирует смещениями указателей.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696380
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисТы хоть смотрел что этот самый CLOOP генерирует?

Ты не поверишь, но смотрел. Хотел в UIB добавить, ещё до того, как Анри зашевелился.

Симонов ДенисВ Delphi такое не прокатывает и надо писать ручками.

РЖУ, в голос.

Т.е. было:

[*]стандартный COM, который относительно неплохо встроен в компиляторы Delphi и FPC, включая ARC (подсчёт ссылок).

[*]автоматическая генерация заглушек из MS IDL (если надо) или TLB

[*]ручной перевод методов COM-интерфейсом с деклараций на C++ в Delphi (не так весело, но опыт наработан сотнями человекомесяцев и процесс хотя и зануден, но понятен)

Вместо этого сделали

[*]нестандартный COM, который экономит циклы процессора отказом от автоматического подсчёта ссылок. Который в принципе на многопроцессорных системах может действительно замедлять присвоение НОВЫХ переменных, но едва ли тестировалось насколько это ускорение актуально для клиентских приложений.

[*]свой тёплый ламповый IDL и свой CLOOP вместо какого-нибудь стандартного IDL-процессора

[*]и поверх этого торта такая вишенка, что выхлоп этого CLOOP "в Delphi не прокатывает и надо писать ручками".

Вот как раз умилённо "повтыкав" в это "немножечко доработайте напильничком" я и восхитился новым клиентским API, в каковом состоянии до сих пор прeбываю.
YouTube Video
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696383
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochтребуется сразу решать, на каких языках будут писаться плагины?

C++ ? тогда не надо городить как-бы-COM-но-не-совсем.
Делайте обычные абстрактные классы C++

Симонов Денис>> Делайте обычные абстрактные классы C++

Изначально так и сделали, но на FPC что-то пошло не так.
Кроме того, есть ещё C.

тоже забавно, ты берешь мой тезис, строго заявленный как C++-only, и начинаешь к нему добавлять другие языки

когда я именно про это и говорил, что нельзя грести в две стороны сразу
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696385
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисИзначально так и сделали, но на FPC что-то пошло не так.
Симонов ДенисВ Delphi такое не прокатывает и надо писать ручками.

Зато теперь ТАК пошло!

Ну прости, ну в самом деле, но вот КАК тут можно не ржать???
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696409
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochВ Delphi такое не прокатывает и надо писать ручками.

Эта фраза относится исключительно к написанию UDR. И никаким стандартным COM здесь ничего не исправить.

Потому что при написании UDR надо:
1. Создать структуры для маппинга входных и выходных параметров. Это можно и не делать, но тогда надо самому оперировать смещениями через IMessageMetadata. Что медленней. Впрочем можно написать и свою прослойку.
2. Написать класс процедуры/функции/триггера
3. Для селективной процедуры ещё написать класс для возврата результат. Ибо дельфи не поддерживает yield. Впрочем в UDF это вообще нельзя сделать.
4. Написать фабрику для создания экземпляра процедуры/функции/триггера
5. Зарегистрировать эту фабрику

По сути написание фабрик очень простое занятие, но напрягает. Можно автоматизировать, если конечно не заниматься в фабриках проверкой декларации UDR или другими вещами кроме самого создания.

На C++ есть ещё хелперы для структур входных и выходных сообщений.

Симонов ДенисИзначально так и сделали, но на FPC что-то пошло не так.

А пошло не так именно с обычными VMT ибо баги в FPC. DS должен прекрасно это помнить.

Ariochнестандартный COM, который экономит циклы процессора отказом от автоматического подсчёта ссылок.

вообще-то целью было не отказ от подсчёта ссылок. Не понравилось наличие в IUnknown метода QueryInterface.
Впрочем меня по этому поводу лучше не терзать. Не я сиё решение принимал.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696413
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисвообще-то целью было не отказ от подсчёта ссылок. Не понравилось наличие в IUnknown метода QueryInterface.
Впрочем меня по этому поводу лучше не терзать. Не я сиё решение принимал.

может быть и так, давно это было, подробности не помню уже

ну я тогда долго пытался прочитать "почему же не COM" и меня просветление не хватило. Не дорос...
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696416
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисА пошло не так именно с обычными VMT ибо баги в FPC. DS должен прекрасно это помнить.

Я помню это лучше, чем хотелось бы. Не было никакого "бага с VMT в FPC". Был общий для
Delphi и FPC баг, не позволяющий работать функциям вида
Код: pascal
1.
Function foo: interface; external; cdecl;


Они обои хотели исключительно
Код: pascal
1.
Procedure foo(var Result: interface); external; cdecl;


И у разработчиков таки был выбор: переделать весь API на такой способ возврата интерфейсов
или стоять на своём. Они решили стоять.

Симонов ДенисНе понравилось наличие в IUnknown метода QueryInterface.
Что, как я и писал в своё время, отлично решалось заглушкой во всё равно используемом
template, всегда возвращающей "interface not supported". Да, возможно от этого отвалились
бы дельфийские is и as, но это легко решалось бы потом (при необходимости) одной
дополнительной строчкой в этой же заглушке.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39696417
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

я надеюсь ты понял к чему я сказал про

авторВ Delphi такое не прокатывает и надо писать ручками.

не надо меня перевирать, а то мало ли кто прочтёт. Ещё Влад с Димой придёт и дадут мне по шапке за враньё. Оно никак не относилось к вопросу почему не COM. Тем более что внятно объяснить почему не COM я не смогу. Это не моё решение и я даже не участвовал в тех обсуждениях. Говорю что по факту есть сейчас.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697183
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovИ у разработчиков таки был выбор: переделать весь API на такой способ возврата интерфейсов или стоять на своём. Они решили стоять.

Был еще третий вариант - bridge. Сделать например DLL специально под FreePascal/Delphi, который бы переводил одно в другой.

В любом случае, если "они решили стоять" и игнорировать ограничения FPC/D, то тем самым они решили убрать многоязычность из задач интерфейса, т.е. сделать интерфейс на C++ - и тогда добавленная абстракция/косвенность через FB-IDL и CLOOP становится уже 5-м колесом телеги.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697207
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

рука-лицо. Вот тебе не всё ли равно как там внутри выглядит сгенерированый файл для работы через API. Важно что он есть.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697259
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисВажно что он есть.
Симонов ДенисВ Delphi такое не прокатывает и надо писать ручками.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697261
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисПравда понимание кода стразу падает, ибо подробности скрыты.

Вот это, кстати, тоже.

Как-то так довольно получается со всеми "автоматическими идиотами", что часто эти "скрытые подробности" вылезают боком и приходится таки дебажить ручками
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697265
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochСимонов Денис В Delphi такое не прокатывает и надо писать ручками.

Как же ты достал приводить эту мою фразу. Ещё раз для тех кто не понял моего предыдущего объяснения.

Берём пример написания внешней процедуры на C++.

текст на С++
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
/***
create procedure gen_rows2 (
    start_n integer not null,
    end_n integer not null
) returns (
    n integer not null
)
    external name 'udrcpp_example!gen_rows2'
    engine udr;
***/
FB_UDR_BEGIN_PROCEDURE(gen_rows2)
	FB_UDR_MESSAGE(InMessage,
		(FB_INTEGER, start)
		(FB_INTEGER, end)
	);

	FB_UDR_MESSAGE(OutMessage,
		(FB_INTEGER, result)
	);

	FB_UDR_EXECUTE_PROCEDURE
	{
		out->resultNull = FB_FALSE;
		out->result = in->start - 1;
	}

	FB_UDR_FETCH_PROCEDURE
	{
		return out->result++ < in->end;
	}
FB_UDR_END_PROCEDURE



Речь идёт о макросах FB_UDR_BEGIN_PROCEDURE, FB_UDR_MESSAGE, FB_UDR_EXECUTE_PROCEDURE, FB_UDR_FETCH_PROCEDURE, FB_UDR_END_PROCEDURE. Ну не напишешь ты такое на Delphi хоть весь интерфейс трижды будет реализован на стандартном COM. Не ужели это не ясно?

А внутри все эти макросы раскрываются примерно в то же самое что и на Delphi, естественно с учётом специфики С++.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697273
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисРечь идёт о макросах FB_UDR_BEGIN_PROCEDURE, FB_UDR_MESSAGE, FB_UDR_EXECUTE_PROCEDURE,
FB_UDR_FETCH_PROCEDURE, FB_UDR_END_PROCEDURE. Ну не напишешь ты такое на Delphi хоть весь
интерфейс трижды будет реализован на стандартном COM.

Если интерфейс написан на стандартном СОМ, то эти макросы напрочь не нужны, ибо всё, что
они делают, это объявляют обёртки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697274
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochКак-то так довольно получается со всеми "автоматическими идиотами"

никаких автоматических идиотов нет. Просто для программеров на C++ написаны хелперы, позволяющие сократить портянки кода.
Если немного покумекать, то и для дельфийского кода тоже кое-что можно подсократить. Но не до такой степени как на C++. И сюрпрайз для Java и C# код может быть ещё короче. Но тебе я вижу лишь бы поворчать не вникая в суть проблемы. В отличие от Дмитрия ты даже не пытался понять что к чему.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697275
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ну да, ну да. Статическую структуру сообщений через COM не построишь.
Всё что ты говоришь относится исключительно к автопойнтерам, но ни как не к автогенерации классов и структур.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697277
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисИ сюрпрайз для Java и C# код может быть ещё короче.

Это вряд ли. Клоп не позволяет наследование, тем более множественное. Поэтому единственный
способ реюзать код это копи-паста с помощью макросов, а макросов сишного уровня,
позволяющих одну строчку развернуть в портянку на два экрана, в них, насколько я знаю, нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697283
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

я смотрел демку реализации у Иржи. Так вот он там хитро для процедур вывернулся через оператор yield, вместо создания класса ResultSet
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697284
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

поясню мы говорим об объёме кода который необходимо написать конечному пользователю, а не о том сколько промежуточных слоёв наделали за тебя. Тут и без лупы видно что код на C# и Java будет работать в разы медленней.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697287
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисСтатическую структуру сообщений через COM не построишь.

Вообще-то вполне можно было бы, если бы не фиксированный формат буфера, который вынуждает
структуру подгонять под IMessageMetadata, а не наоборот. Это как раз первое, что я
попытался сделать, увидев новое API: создать дельфийский класс, который по заданной record
заполняет наследника от IMessageMetadata. Разочарование было жестоким, когда я понял, что
весь код Firebird игнорирует значения, возвращаемые getOffset() и getNullOffset().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697299
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

а какой в этом смысл, если входные и выходные сообщения всё равно должны полностью соответствовать входным и выходным параметрам объявленным в PSQL для UDR? Или ты про триггеры? Я их даже не щупал ещё.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697303
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениса какой в этом смысл, если входные и выходные сообщения всё равно должны полностью
соответствовать входным и выходным параметрам объявленным в PSQL для UDR?

Не должны, но могут. Более того, UDR могут сами себя регистрировать и описывать свои
параметры, не требуя явного их создания с помощью SQL. Но взадсовместимость требует, чтобы
список параметров был доступен через select from где-то, а перековать таблицу
RDB$FUNCTION_ARGUMENTS во вьюху, объединяющую параметры всех трёх видов функций, видимо,
показалось слишком большой работой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697304
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovигнорирует значения, возвращаемые getOffset() и getNullOffset().

....ну если даже QueryInterface слишком медленный оказался, то тут тем более.

М.б. внутрь буфера надо было сначала положить вектор смещений/указателей, а потом уже вектор данных.

Тогда библиотека в конечном ЯВУ могла бы "препарить" первый вектор раз и насовсем и много раз потом копировать/заполнять только данные
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697308
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

это и ежу понятно. Фигачить такие вызовы каждый раз да ещё и с проверкой статуса на фиг не надо. Это можно сделать единожды при создании экземпляра процедуры/функции. В любом случае получение указателей по смещениям будет медленней чем через фиксированную структуру.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697335
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ежу непонятно, зачем нужны методы, которые не используются, чтобы путаться проще было?

у Явы и совр. Delphi у объектов есть функция getHash().
Думаю и тут можно было бы сделать ф-ию типа getFormatHash() и дёргать getOffset только для новых форматов.

Впрочем, как сделано - так сделано.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697337
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисполучение указателей по смещениям будет медленней чем через фиксированную структуру

Не факт. Через фиксированную структуру указателей на современных процессорах (у которых мегабайтные кэши на порядок быстрее ОЗУ) будет не хуже. Вспомни, например, как статически линкованные DLL подсоединяются на ассемблерном уровне при загрузке EXE.

И в любом случае, всё снова упирается в вопрос "что мы хотим сделать?"

Если максимально быстрый интерфейс на C++ - это один выбор.
Если кросс-язычный интерфейс с максимально лёгкой интеграцией в широкий спектр языков - то другой.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697416
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochЕжу непонятно, зачем нужны методы, которые не используются, чтобы путаться проще было?

в каком смысле не используются? Хочешь используй, хочешь нет.

Arioch,

давай так. Ты попробуешь написать маленькую UDR на Delphi. Доведёшь её до работоспособного состояния, а потом продолжим беседу.
Можешь даже с кусками кода, которые у тебя нарекания вызвали. А то у меня такое ощущение, что "Пастернака не читал, но осуждаю".
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697554
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисТы попробуешь написать маленькую UDR на Delphi. Доведёшь её до работоспособного состояния, а потом продолжим беседу.
+1 и чтобы среди передаваемых типов ещё и блоб был :)
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697572
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

тебе для каких целей? Если хочешь сам разобраться пиши, поможем
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697591
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денистебе для каких целей? Если хочешь сам разобраться пиши, поможем
Попросил блобы, чтобы усугубить ситуацию "удобства" API.
Я уже делал несколько подходов и не восторге от нового API. Постоянно не кричу на всех углах, только потому, что не знаю как сделать лучше. Была благая идея сделать обёртку с кодогенерацией, но каждый раз вскипаю.
С блобами, кстати, как-то сразу не задалось. В Java обёртке проблемы. Тикет висит. Если не путаю, то в первой версии .net-обёртки они не поддерживались.

Немного в сторону.
Если уж продолжать тему API для Delphi/Lazarus изложу своё видение.
Нужно сделать кодогенератор из файла с простым описанием упрощённого SQL для UDR.
По нему генерируем скрипт подключения к БД и базовый класс самой UDR.
В коде наследуемся и реализуем методы. + Нужны хелперы для блобов (и теперь для decfloat).
Для реализации всего этого нужны примеры нв Delphi со всеми видами вызовов (функция, процедура, триггер) и типов данных. Нужны все виды возврата (скаляр из функции, набор из процедуры).
Понятно, что "Делфи тут никто не знает", но вполне можно сделать костлявый прототип и силами сообщества допилить до ума, кода там немного.

PS. Почему вообще блобы. Это единственный тип данных, который больно обрабатывать на сервере. А городить огород, если всё влезло в хранимки, не очень хочется.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697599
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисв каком смысле не используются? Хочешь используй, хочешь нет

Это называется "угадайка".
Есть такая вешь, как single responsibility

Dimitry Sibiryakovвесь код Firebird игнорирует значения, возвращаемые getOffset() и getNullOffset()

Таким образом, писать эти функции бесполезно - и включать в интерфейс, который должен был быть написан 3-й стороной - не нужно.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697624
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

ну справедливости ради. В UDF с блобами работать ничуть не удобнее чем в UDR.
Я сейчас активно копаю тему UDR и собираюсь написать мануал по их написанию на Delphi/Lazarus. Уже кое-что написано. Но очень много время занимают исследования, ибо эта тема практически не документирована. Во многих случаях код для написания одной UDR функции можно существенно подсократить до такой степени, что будет не сильно больше чем для UDF.

decfloat можно перевести в Bcd если что, там есть специальных хелпер.

Arioch,

давай ты не будешь комментировать то в чём даже не пытался разобраться. Вот Dimitry Sibiryakov реально трогал новый API и имеет негативный опыт, поэтому его комментарии интересны. Ты же просто вводишь форумчан в заблуждения.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697639
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЯ сейчас активно копаю тему UDR и собираюсь написать мануал по их написанию на Delphi/Lazarus. Уже кое-что написано. Но очень много время занимают исследования, ибо эта тема практически не документированаПрекрасно ! Обращайся, если нужно - может получится помочь
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697651
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЯ сейчас активно копаю тему UDR и собираюсь написать мануал по их написанию на Delphi/Lazarus. Уже кое-что написано.
Может github?
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697666
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

выложу, но при условии не ссылаться туда пока всё не будет доделано. А то ещё скажут, что я плохому научил. Сам ещё разбираюсь.

hvlad,

спасибо. Куда лучше вопросы задавать?
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697672
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисКуда лучше вопросы задавать?Пиши мылом, а там посмотрим :)
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697682
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисвыложу, но при условии не ссылаться туда пока всё не будет доделано. А то ещё скажут, что я плохому научил. Сам ещё разбираюсь.
Ок. Мыло в профиле.

Ну и критика Влада, даже на то "что удалось", тоже желательна.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39697703
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисВ UDF с блобами работать ничуть не удобнее чем в UDR.

Вообще-то удобнее. Тебе в UDF сразу дают хэндл блоба и функции работы с ним, а в UDR для
получения и того и другого придётся сделать несколько прыжков в ширину.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39698252
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисAriochсколько у нас Delphi-библиотек на тупом неправильном устаревшем API тянущемся с прошлого века

это кто тебе сказал что это API тупое и устаревшее? Плюнь ему в глаз.

Вы это, продолжайте писать что-ли. Так увлекательно читать.

Подброшу на вентилятор.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39698284
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коваленко Дмитрий,

казалось бы причём тут новое API vs старое? Проблемы fbclient если они есть общие для обоих.
И какое отношение имеет провайдер к обсуждаемому далее вопросу UDR vs UDF?
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39698774
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

маленький эксперимент с BLOB. Пока не сильно напрягался с оптимизацией

Код: sql
1.
2.
3.
4.
5.
6.
create procedure split (
   txt blob sub_type text character set utf8,
   delimiter char(1) character set utf8 = ','
) returns (id integer)
external name 'myudr!split'
engine udr;



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with t as (
  select CODE_DICTIONARY
  from WORD_DICTIONARY_EXT
  fetch first 1000000 rows only
)
select
  count(*) as cnt,
  min(ids.id) as min_id,
  max(ids.id) as max_id
from split((select list(CODE_DICTIONARY) from t), ',') ids



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
План
PLAN (T WORD_DICTIONARY_EXT NATURAL)
PLAN (IDS NATURAL)

------ Информация о производительности ------
Время подготовки запроса = 0ms
Время выполнения запроса = 3s 844ms
Среднее время на получение одной записи = 3 844,00 ms
Current memory = 558 906 040
Max memory = 559 127 128
Memory buffers = 32 768
Reads from disk to cache = 0
Writes from cache to disk = 668
Чтений из кэша = 1 036 411

Код: plaintext
1.
CNT	MIN_ID	MAX_ID
1000000	1	1007014

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with t as (
  select CODE_DICTIONARY
  from WORD_DICTIONARY_EXT
  fetch first 1000000 rows only
)
select
  count(*) as cnt,
  min(t.CODE_DICTIONARY) as min_id,
  max(t.CODE_DICTIONARY) as max_id
from t



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
План
PLAN (T WORD_DICTIONARY_EXT NATURAL)

------ Информация о производительности ------
Время подготовки запроса = 0ms
Время выполнения запроса = 937ms
Среднее время на получение одной записи = 937,00 ms
Current memory = 558 874 496
Max memory = 559 127 128
Memory buffers = 32 768
Reads from disk to cache = 0
Writes from cache to disk = 0
Чтений из кэша = 1 032 409

Код: plaintext
1.
CNT	MIN_ID	MAX_ID
1000000	1	1007014

Код: sql
1.
2.
3.
4.
5.
6.
7.
with t as (
  select CODE_DICTIONARY
  from WORD_DICTIONARY_EXT
  fetch first 1000000 rows only
)
select char_length((select list(CODE_DICTIONARY) from t))
from rdb$database



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
План
PLAN (T WORD_DICTIONARY_EXT NATURAL)
PLAN (RDB$DATABASE NATURAL)

------ Информация о производительности ------
Время подготовки запроса = 0ms
Время выполнения запроса = 1s 610ms
Среднее время на получение одной записи = 1 610,00 ms
Current memory = 559 027 432
Max memory = 559 127 128
Memory buffers = 32 768
Reads from disk to cache = 0
Writes from cache to disk = 668
Чтений из кэша = 1 034 417

Код: plaintext
1.
CHAR_LENGTH
6896780
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39698838
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, вполне себе шустро.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39698873
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

и это ещё сделано максимально просто без попыток оптимизации. Сейчас весь блоб тупо посегментно загоняется TStringStream, а затем делается Stream.DataString.Split([delimiter], ...), и уже по полученному массиву возвращаются данные. Из-за этого в частности не работает конвеерная выдача результатов. По идее можно было читать и обрабатывать сегменты по мере выдачи результата, и чем то более эффективным чем встроенный split
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39701776
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адриано ответил, что ALTER UDF в PSQL-функцию - это совершенно нормально и так и задумывалось. Тем не менее, его не смущает, что при попытке дропнуть функцию - сообщается, что это таки UDF.

Денис Симонов, такой финтифлюх отражен в документации? Я что-то не припоминаю.
...
Рейтинг: 0 / 0
Internal и external function с одинаковым названием
    #39701886
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

почитал. Там какие-то споры что есть UDF. Формально Адриано прав все функции определённые пользователем являются UDF.

Но для тех кто работал с Firebird/Interbase N лет UDF это именно внешние функции определённые как DECLARE EXTERNAL FUNCTION. Если я правильно понимаю терминологию, то сейчас их надо называть Legacy UDF (тем более что в 4.0 уже deprecated).

Возможно в документации надо подправить терминологию.

UDF - User Defined Function - любая функция определённая пользователем
UDR - User Defined Routine - любая подпрограмма определённая пользователем (функция/процедура/триггер)

Функции бывают:
- встроенными (IIF, CHAR_LENGTH ...)
- определённые пользователем (UDF)

UDF бывают:
- внешние
- внутренние (или PSQL функции)

Внешние UDF бывают:
- Legacy (DECLARE EXTERNAL FUNCTION)
- обычные (CREATE FUNCTION ... EXTERNAL)

CyberMaxДенис Симонов, такой финтифлюх отражен в документации?

нет
...
Рейтинг: 0 / 0
71 сообщений из 71, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Internal и external function с одинаковым названием
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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