FirebirdSQL/firebird

Procedure manipulation can lead to wrong dependencies removal

asfernandes opened this issue · 0 comments

set list on;

create table t1 (n1 integer, n2 integer computed by (n1));
commit;
select * from rdb$dependencies;

Single dependency when there is only the table:

RDB$DEPENDENT_NAME              RDB$2                                                                                                                                                                                                                                                       
RDB$DEPENDED_ON_NAME            T1                                                                                                                                                                                                                                                          
RDB$FIELD_NAME                  N1                                                                                                                                                                                                                                                          
RDB$DEPENDENT_TYPE              3
RDB$DEPENDED_ON_TYPE            0
RDB$PACKAGE_NAME                <null>
create procedure p1 (i1 type of column t1.n2) as begin end;
commit;
select * from rdb$dependencies;

Two dependencies afte procedure is created:

RDB$DEPENDENT_NAME              RDB$2                                                                                                                                                                                                                                                       
RDB$DEPENDED_ON_NAME            T1                                                                                                                                                                                                                                                          
RDB$FIELD_NAME                  N1                                                                                                                                                                                                                                                          
RDB$DEPENDENT_TYPE              3
RDB$DEPENDED_ON_TYPE            0
RDB$PACKAGE_NAME                <null>

RDB$DEPENDENT_NAME              P1                                                                                                                                                                                                                                                          
RDB$DEPENDED_ON_NAME            T1                                                                                                                                                                                                                                                          
RDB$FIELD_NAME                  N2                                                                                                                                                                                                                                                          
RDB$DEPENDENT_TYPE              5
RDB$DEPENDED_ON_TYPE            0
RDB$PACKAGE_NAME                <null>
drop procedure p1;
commit;
select * from rdb$dependencies;

No dependency when procedure is droped and there is only the table: