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