|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
FB 3.0. В базе есть UDF с именем FORMAT_DATE. И я создал FUNCTION с именем FORMAT_DATE. Теперь я не могу сделать вызов UDF, так как она перекрывается обычной функцией. Надо ли идти с этим в трекер? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 04:50 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Более того, я не могу удалить обычную функцию, так как на нее повесились все зависимости от UDF - по факту же она нигде не используется. Создал CORE-5905 . ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 05:06 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
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 функции надо бы запретить создавать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 08:44 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Симонов Денис, либо таки наконец ввести namespaces UDF$FORMAT_DATE, UDR$FORMAT_DATE, UDSQL$FORMAT_DATE ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 16:32 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Arioch, в топку. Если уж и вводить то схемы. Нужны неймспейсы делай PSQL пакеты. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 16:40 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Симонов Денис, ну так введите имплицитный пакет Legacy куда и складывайте все UDF и с UDR аналогично чтобы в ядре (в зависимостях, в планах, в BLR) было полное имя объекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 16:45 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Arioch, легаси нельзя в пакетах размещать, у них синтаксис совсем другой. А обычные UDR ты и сам можешь в пакете поместить. И опять же авторну так введите имплицитный пакет можно подумать что я этим занимаюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 16:51 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
можно подумать, что ты единственный читаешь ты защищаешь некую коллективную точку зрения, некотое коллективнoе статус-кво, которое привело к проблеме "забыли заранее повесить заплатку" и может быть ещё приведет я его критикую, не тебя лично, а коллективное ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 19:57 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Ariochты защищаешь некую коллективную точку зрения, некотое коллективнoе статус-кво, я никого не защищаю. У меня есть своё мнение на этот счёт. И я полностью согласен с ТС, что позволять создавать одноименные UDF и PSQL функции это баг. Да и команда разработчиков тоже согласна. А вот твоё предложение не поддерживаю. И кстати в 4.0 Legacy UDF объявлены depricated. И как-то особо стараться чтобы улучшать их возможности (ну например позволять размещать в пакетах) уже не будут. Поэтому если есть ещё необходимые вам самописные UDF пора задуматься над тем чтобы переписать их на UDR. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 10:17 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Надо просто будет сделать бридж - UDR реализующую UDF Замена простых решений сверх-сложными, просто ради замены.... После всех фанфар, что UDR нужна, чтобы огнать и писать Оракл и писать плагины на Java - вот UDR давно есть, а плагинов на Java нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:22 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Ariochчтобы огнать и писать Оракл догнать и перегнать ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:22 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Arioch, вообще плагин для написания UDR на Java есть (Beta версия). Но Адриано там так намудрил, что использовать его сложновато. Я уж лучше на Delphi UDR напишу. Чтобы догнать и перегнать Оракл одних Java UDR явно не достаточно ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:30 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Симонов ДенисНо Адриано там так намудрил если бы так было, кто-нибудь бы уже написал "хорошо и просто", тот же Марк например. Давай посмотрим, сколько у нас Delphi-библиотек на тупом неправильном устаревшем API тянущемся с прошлого века * FIBC и её потомки IBX & FIB+ * IBO * UIB плюс к ним - универсалы * BDE * DBX * Zeos * UniDAC * AnyDAC А сколько у нас Delphi-библиотек с крутейшим гибким удобным быстрым и современным API ? И дело тут явно не в десятках лет запасов. Десятки лет - это например рассыпавшийся от старости BDE. А UIB был начат с чистого листа несмотря на наличие к тому времени других библиотек. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:50 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
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 уже много стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 13:10 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Симонов ДенисПросто в 3.0 новое API по большому счёту для клиентских приложений не даёт ничего нового. А вот в 4.0 это уже не так. Один Batch API уже много стоит. Он стоит меньше, чем кажется на первый взгляд. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 13:27 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, так там много чего ещё есть. Те же самые длинные имена объектов. Вроде новую XSQLVAR не стали делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 13:42 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Симонов Денисэто API тупое .... там есть определённые ограничения тогда зачем было создавать резко отличное API вместо расшиваиня этих "определенных" - т.е. немногочисленных и локализованых - узких мест? Симонов Денисэто API .... устаревшее? Симонов Денисзабить на совместимость с Firebird < 3.0. когда выходило последнее обновление FB 2.1.x ? а почему? когда выйдет последнее обновление FB 2.5.x ? > IBX - глубоко плевать на Firebird. Он на Interbase ориентирован. В том числе IBX/Lazarus ? Но речь то не о том совсершенно. Ты уводишь разговор в сторону. Я говорил про написание новых библиотек, поэтому и считал их количество. Я даже специально подчеркнул, что UIB был написан несмотря на уже существующую пачку библиотек. А ты переводишь разговор на модификацию старых - не о том речь, пксть они все хоть умрут как BDE! Где же НОВЫЕ библиотеки, изначально строящиеся вокруг крутого и прогрессивного ОО-API ? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 13:47 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Симонов ДенисВроде новую XSQLVAR не стали делать. Я не стал её делать, поскольку особого смысла не вижу, а у остальных и вообще нет ни времени ни желания. А так скопировать определение XSQLVAR версии 2 с интербейзовских заголовков и подправить пару внутренних классов для её распознавания - работы на пару дней. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 13:55 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Ariochтогда зачем было создавать резко отличное API вместо расшиваиня этих "определенных" - т.е. немногочисленных и локализованых - узких мест? Это новое API изначально создавалось для использования плагинами, которым нужна была единая точка доступа к функциям движка. Потом его внезапно (и преждевременно по моему мнению) решили сделать и клиентским тоже. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 13:58 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
немного оффтопика Симонов Денис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 намного проще. И простота эта - сама по себе достоинство. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 13:59 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЭто новое API изначально создавалось для использования плагинами Что само по себе уже забавно. Потому что тут требуется сразу решать, на каких языках будут писаться плагины? C++ ? тогда не надо городить как-бы-COM-но-не-совсем. Делайте обычные абстрактные классы C++ Кросс-языковый? тогда берите стандартную библиотеку, с которыми известно как работать из разных языков. Например MS-COM и XPCOM. Взаимодействием COM<->.Net например сама Майкрософт занимается, почему же это было не использовать? Но это якобы будет на несколько процентов медленнее. В результате получили произведение искусства, которое чужеродное и для C++ и для остальных языков. Но зато все никем ненаписанные плагины работают несколько быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:05 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovединая точка доступа к функциям движка. Кстати, а насколько этот доступ безопасен? ведь по идее чем глубже залезть - тем больше можно разломать. Вот обычный UDF - куда казалось бы примитивнее, можно писать не приходя в сознание и примеров кругом полно. И все равно люди умудряются накосячить и с конвенциями вызова и с FREE_IT. Если чайник начнёт писать UDR-плагин по такому же принципу, как эти горе-UDF, собрать вместе несколько отрывков кода с разных форумов, а потом "трясти", менять тут и там наугад, пока плагин не подключиться - насколько негативное влияние на стабильность работы движка будет больше или меньше сравнительно с аналогичными UDF ? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 14:11 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
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 прикрутят. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 15:26 |
|
Internal и external function с одинаковым названием
|
|||
---|---|---|---|
#18+
Симонов Денис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 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 16:08 |
|
|
start [/forum/topic.php?fid=40&msg=39695702&tid=1560985]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
74ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 181ms |
0 / 0 |