Почему когда я изменяю строку в запросе, находящемся в свойстве TpFIBDataset.SelectSQL
ID,
на
ID as RES_ID,
то перестают появляться файлы, кеширующие BLOB-поля.
Сам запрос:
SELECT
ID,
IMAGEINDEX,
TRANSLATOR,
FIRST_NAME,
MIDDLE_NAME,
LAST_NAME,
FULL_NAME,
LANGUAGE,
AVATAR
FROM
RDB$USER_PRIVILEGES
inner join resource on resource.translator = RDB$USER_PRIVILEGES.RDB$USER
where
(RDB$USER <> 'SYSDBA') and (RDB$USER <> 'PUBLIC')
and (RDB$USER not in ( SELECT RDB$ROLE_NAME FROM RDB$ROLES ))
and RDB$RELATION_NAME in ('TRANSLATOR','ADMINISTRATOR')
В статье приводятся пункты, когда кеширование не сработает
1. Таблица должна иметь первичный ключ.
2. Чтение BLOB-полей должна производиться компонентом TpFIBDataSet.
3. Приложение само должно следить за свободным местом на диске. В частности, такую функцию можно реализовать в обработчике события BeforeSaveBlobToSwap.
пп. 2 и 3 меня не смущают. А вот п. 1 - Таблица должна иметь первичный ключ, настораживает.
Я специально показал в запросе связку двух таблиц, чтобы было видно, что так тоже кешируются BLOB-поля. Но вот запрос к представлению этого соединения уже не кеширует их.
Я конечно могу обойтись и без представлений и название ключевого поля будет совпадать с оригинальным, но всё же...
В чём подвох?