Shared matadata cache. Regression since 6.0.0.1771: one may to invoke private packaged procedure from outer code

18 views
Skip to first unread message

Pavel Zotov

unread,
May 30, 2026, 4:34:18 AM (4 days ago) May 30
to firebird-devel
Consider script:
==============
set bail on;
set echo on;
shell if exist r:\temp\tmp4test.fdb del r:\temp\tmp4test.fdb;
create database 'localhost:r:\temp\tmp4test.fdb' user sysdba password 'masterkey';

set term ^;
create or alter package pg_temp as
begin
end
^
recreate package body pg_temp as
begin
    procedure sp_get_top_secret returns(id int, f01 boolean) as
    begin
        for
            select rand()*1000, rand() < 0.5
            from rdb$types
            rows 5
        into
            id, f01
        do
            suspend;
    end
end
^
set term ;^

select * from pg_temp.sp_get_top_secret;
commit;

==============
NOTE: package header is EMPTY.

On 3.x ... 5.x and up to 6.0.0.1465-3bbe725 it will show:
...
select * from pg_temp.sp_get_top_secret;
Statement failed, SQLSTATE = 42000
Procedure "SP_GET_TOP_SECRET" is private to package "PUBLIC"."PG_TEMP"

Since 6.0.0.1771-f73321c procedure SP_GET_TOP_SECRET can be called w/o error and shows data:
select * from pg_temp.sp_get_top_secret;

          ID     F01
============ =======
         857 <false>
         880 <false>
         111 <false>
         266 <false>
         353 <false>

Pavel Zotov

unread,
Jun 2, 2026, 10:08:04 AM (yesterday) Jun 2
to firebird-devel
J4I: fixed in #12b2158d 
Reply all
Reply to author
Forward
0 new messages