Altering a procedure called by another procedure doesn't recompile parent
-------------------------------------------------------------------------
Key: CORE-5065
URL: http://tracker.firebirdsql.org/browse/CORE-5065
Project: Firebird Core
Issue Type: Bug
Components: Engine
Affects Versions: 2.5.4
Environment: Tested on both Windows and Linux servers
Reporter: Jonathan Neve
Create procedures using the following SQL:
create procedure PR_TEST_CHILD
returns (
RESULT varchar(20))
as
begin
result = 'TEST INIT';
suspend;
end;
create procedure PR_TEST_PARENT
returns (
RESULT varchar(20))
as
begin
select result from pr_test_child into :result;
suspend;
end;
If you select from PR_TEST_PARENT, you will get 'TEST INIT', as expected.
Open a new transaction, select * from PR_TEST_PARENT, you get 'TEST INIT'
again. Keep this second transaction open.
Now open a new transaction, and change the child procedure:
create or alter procedure PR_TEST_CHILD
returns (
RESULT varchar(20))
as
begin
result = 'TEST CHANGED';
suspend;
end;
Commit this transaction, and then select again. You'll get 'TEST INIIT'.
Commit all open transactions, close all connections, open a new
connection/transaction and select again from parent proc, and you'll still get
'TEST INIT'.
If you do the above with only one transaction open, it all works fine, so it
seems to be caused by altering the child procedure on the fly while other
transactions are open and/or while the parent proc is in use in another
transaction. A clear error message would be a lot better than this highly
confusing behaviour.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel