"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 Заодно вроде как бага вылезла с оставшимся коннектом, сегодня посмотрю


Ответить