SC: должна ли ХП, не сохр-шаяся в БД, оставаться в кеше мета после 1-го обращения к ней?

Таблоид
Дата: 23.06.2012 14:49:35
hi all

C:\1INSTALL\FIREBIRD\FB_2_5\bin>isql localhost/3050:C:\1INSTALL\FIREBIRD\FB_2_5\bin\T1.FDB
Database: localhost/3050:C:\1INSTALL\FIREBIRD\FB_2_5\bin\T1.FDB
SQL> set autoddl off; commit;
SQL> set term ^;create or alter procedure p1 returns(n int) as begin n=(select rand()*1000 from rdb$database); suspend; end^
set term ;^ -- commit НЕ делаем!
SQL> select * from p1;

N
============
347

SQL> rollback;
SQL> -- убедимся, что процедуры нет в словаре базы:
SQL> select count(*) from rdb$procedures where rdb$procedure_name = upper('P1');

COUNT
============
0

SQL> show procedures;
There are no stored procedures in this database
SQL> -- а теперь снова:
SQL> select * from p1;

N
============
585

SQL> rollback;
SQL> select * from p1;

N
============
552

SQL> -- "знание" базы о незаписанной процедуре исчезает только после переконнекта:
SQL> commit; connect localhost/3050:C:\1INSTALL\FIREBIRD\FB_2_5\bin\T1.FDB;
Database: localhost/3050:C:\1INSTALL\FIREBIRD\FB_2_5\bin\T1.FDB
SQL> select * from p1;
Statement failed, SQLSTATE = 42S02
Dynamic SQL Error
-SQL error code = -204
-Table unknown
-P1
-At line 1, column 15

Процедура `p1` даже не была сохранена в словаре. Хотя и была вызвана 1 раз коннектом, её создавшим ("в памяти").
ВОПРОС. Есть ли способ очистки кеша метаданных без переконнекта ?
dimitr
Дата: 23.06.2012 16:07:10
кеш грузится только с диска, а не из астрала. Никаких "в памяти" нет и быть не может. Процедура была сохранена в словаре, а роллбек просто удалил эту запись.