"Alex Bekhtin" ...
А что ты хотел этим сделать ? Добиться того, чтобы я запретил
COMMIT\ROLLBACK
в EXECUTE STATEMENT ? Так я это сделаю ;)
Ну думаю не стоит, ибо COMMIT RETAIN есть )
Мгм... я подумаю ещё... а пока можно в трекер занести
Вообще, оптимизация соединения EXECUTE STATEMENT с внешними
датасорсами - это нужная вещь.
Смотря что под этим понимать...
НАПРИМЕР:
Выполнили RDB$SET_CONTEXT, а потом давай из VIEW запросы писать. Ну
а VIEW данные по контексту ограничивают.
...ибо это я не понял
----
Вышел на это случайно.
Прочитал в README.monitoring_tables.txt:
DELETE FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID <>
CURRENT_CONNECTION
любопытство заставило задаться вопросом: "А что ели не указать
условие?"
И что?... ничего!
Убить свой коннект хотел ? Должно убить, imho... А зачем ?
Тогда стал копать в сторону: "А как же тогда <<саммо-отключиться>>"
родилось нечто вида:
execute block as
declare variable DB_NAME TYPE OF COLUMN MON$ATTACHMENTS.MON
$ATTACHMENT_NAME;
begin
SELECT A.MON$ATTACHMENT_NAME FROM MON$ATTACHMENTS A
WHERE A.MON$ATTACHMENT_ID = CURRENT_CONNECTION
INTO :DB_NAME;
EXECUTE STATEMENT ('DELETE FROM MON$ATTACHMENTS WHERE MON
$ATTACHMENT_ID = :CONN') (CONN := CURRENT_CONNECTION)
ON EXTERNAL 'localhost/3051:' || :DB_NAME
--WITH AUTONOMOUS TRANSACTION
AS USER 'SYSDBA' PASSWORD 'masterkey';
end
Изврат :)
Во-первых, должно убить и из своего коннекта, imho, а во-вторых можно и без
'localhost/3051'.
--
Хорсун Влад
PS Заодно вроде как бага вылезла с оставшимся коннектом, сегодня посмотрю