powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
11 сообщений из 61, страница 3 из 3
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
    #39670765
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийв некоторых серверах из большой тройки такой API действительно есть.
но издержки и затраты зачастую не стоят того чтоб заморачиваться.
Нет, я противник и этого.
WildSeryИли не писать аппсервер для доступа к этим файлам.
http-сервер вполне для этого сгодится любой. А парсить уже на клиенте можно, опять же.
WildSeryЧтобы не раздавать права доступа для клиентов
Если от прав юзеров база зависит доступ к этим файлам - тогда да. Тут уж писать придется.
...
Рейтинг: 0 / 0
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
    #39671742
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, спасибо всем за активное обсуждение моей набольшой задачи. Даже удивлен. Особое спасибо тем, что кто предоставил конкретные документы и даже код, а также тем, кто внимательно посмотрел именно на мои вопросы и предположения.

kdvблоб-фильтр получает на входе только блоб, и на выход выдает тоже только блоб

Как это можно выяснить, не отвлекая гуру от важных дел, а из документации? Если вы заметили, первый мой вопрос был такой:
shalamyansky1) Каков интерфейс функции, реализующей BLOB фильтр?

"Руководство" дает лишь объявление со стороны SQL
Код: sql
1.
2.
3.
DECLARE FILTER filtername
INPUT_TYPE <sub_type> OUTPUT_TYPE <sub_type>
ENTRY_POINT 'function_name' MODULE_NAME 'library_name';


из которого совершенно непонятно (мне, по-крайней мере), что же должна ожидать реализующая функция 'function_name', что и в каком виде она получит на входе, и что и в каком виде должна отдать.

Некоторые нюансы задачи, которые заинтересовали публику:

2) Размеры передаваемых "файлов" > 32K, поэтому от типа BLOB, похоже, мне не уйти, даже если буду передавать их посредством "обычной" UDF.
Кстати, почему было не использовать беззнаковые числа для размера строки? 64K все-таки поболе, чем 32K, аж в два раза, во многих случаях эти дополнительные килобайты облегчили бы жизнь.

3)ZIP'ы разложены по папкам файловой системы, каждый ZIP включает в себя множество XML, а каждый XML содержит множество конечных документов. Один запрос по неким идентификаторам должен возвращать один документ.

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

А вообще подход к фильтрам получается интересным: у нас есть замечательная возможность, сообщает "Руководство", вот вам и оператор для неё, но пользоваться ей не надо, это сложно и опасно, и вообще ей никто не пользуется. Лучше не трогайте.
...
Рейтинг: 0 / 0
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
    #39671746
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky,

там написано только то, что относится к SQL/PSQL. Как делать эти самые фильтры в этом руководстве не описано, да и не должно быть. Ибо UDF/UDR и фильтры это отдельная очень большая тема.

авторBLOB фильтр — объект базы данных, являющийся, по сути, специальным видом внешних
функций с единственным назначением: получение объекта BLOB одного формата и
преобразования его в объект BLOB другого формата. Форматы объектов BLOB задаются с
помощью подтипов BLOB.

вроде как из этого текста понятно что вход это блоб и выход это блоб.

shalamyanskyКстати, почему было не использовать беззнаковые числа для размера строки? 64K все-таки поболе, чем 32K, аж в два раза, во многих случаях эти дополнительные килобайты облегчили бы жизнь.

там много причин. Для начала у нас сама запись ограничена 64K байтами. Ну и посмотри определение VARCHAR на уровне сообщений. Там много что на это завязано, и увеличить это не так уж легко.
...
Рейтинг: 0 / 0
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
    #39671747
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyКак это можно выяснить, не отвлекая гуру от важных дел, а из документации?
Внезапно: открыть для себя документацию: 21547549
...
Рейтинг: 0 / 0
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
    #39671749
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Дим, там по большому счёту не написано ровно ничего,пару фраз из которых конечно можно понять что вход и выход BLOB, но не более того.
...
Рейтинг: 0 / 0
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
    #39671752
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денистам по большому счёту не написано ровно ничего,пару фраз из которых конечно можно понять
что вход и выход BLOB, но не более того.

Там далее ссылки ещё на два мануала в которых сказано про интерфейс функции и ещё пара
фраз. Ну а по этим данным найти в исходниках сервера примеры его встроенных фильтров -
дело техники.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
    #39671755
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyКак это можно выяснить, не отвлекая гуру от важных дел, а из документации?
пример api9f.* плюс исходники. в исходниках есть фильтр, который преобразует blr в текст.
shalamyanskyчто же должна ожидать реализующая функция 'function_name'
преобразовывать один тип блоба в другой. На входе блоб, на выходе блоб. См. пример api9f.
shalamyanskyКстати, почему было не использовать беззнаковые числа для размера строки?
это куда и про что вообще? про лимит строки в 32к байт?
Ответ - "так получилось".
...
Рейтинг: 0 / 0
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
    #39671764
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересное кино. У меня работает Firebird 3.0.2, есть на руках "Руководство" по работе именно с этой версией этого продукта, а вы отсылаете меня к руководствам другого продукта, хоть и близкого, да еще непонятно каких версий. Ну, посмотрел. По поводу БЛОБ-фильтров там сказано ровно то же, что и в руководстве по Firebird:

Код: sql
1.
2.
3.
DECLARE FILTER BLOB_FORMAT
INPUT_TYPE 1 OUTPUT_TYPE -99
ENTRY_POINT 'Text_filter' MODULE_NAME 'Filter_99';



Даже если принимает только BLOB, и отдает только BLOB, как я уже узнал, все равно остаются вариации: это два разных in- и out- параметра, или один параметр in-out? Скорее всего, конечно, разные, но вдруг?

Dimitry SibiryakovНу а по этим данным найти в исходниках сервера примеры его встроенных фильтров -
дело техники.

Вы это серьезно предлагаете? А чтобы использовать Windows API, идти в исходники kernel32? Или за неимением оных, дизассемблировать?

kdvСм. пример api9f.

Вот это спасибо! Собственно, это и есть прямой ответ на мой вопрос. Теперь буду и туда смотреть.
...
Рейтинг: 0 / 0
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
    #39671776
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyВы это серьезно предлагаете? А чтобы использовать Windows API, идти в исходники kernel32?
Или за неимением оных, дизассемблировать?

Серьёзно ли я предлагаю примеры кода смотреть в коде? Да, чёрт побери, я серьёзен как пуля
в голове.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
    #39671802
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyэто два разных in- и out- параметра, или один параметр in-out?
1. у Firebird нет in-out параметров
2. в декларации фильтра ДВА параметра. Откуда "один"? Лопни мои глаза?
shalamyanskyИли за неимением оных, дизассемблировать?
гм. я вот С/C++ терпеть не могу, и писать на нем не умею, но исходники-то могу читать.
И исходники Firebird никто не прятал. Да, очень трудно запускать поиск по файлам строки "filter", правда?
Кроме того, раз пресловутые фильтры уже есть в коде, и они работают, то почему-бы их код не посмотреть?
...
Рейтинг: 0 / 0
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
    #39671804
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky,

дополню. из
INPUT_TYPE 1 OUTPUT_TYPE -99
видно, что передаются, собственно, не сами хэндлы блобов или структуры, а просто их подтипы.
И никакого in-out тут и близко нет. Особенно, если преобразовывать одно содержимое блоба в другое содержимое.
...
Рейтинг: 0 / 0
11 сообщений из 61, страница 3 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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