Subject Re: [firebird-support] Re: Firebird 3: Not able to UPDATE RDB$Procedures
Author Mark Rotteveel
On 2018-05-31 18:14, blackfalconsoftware@... [firebird-support]
> I just finished a complete review of Carlos' migration guide. I read
> it quite carefully but completely missed what appears to be a
> contradiction in his explanations for the updating of the source-code
> fields in the system tables. See the following extract below...
> With the expansion of SQL DDL statements in Firebird 3, virtually all
> operations that could be done only through direct changes to the
> system tables can now be done in "official" ways, via SQL DDL.
> The only exceptions are the fields that store the source code of
> procedures and triggers, located in the RDB$PROCEDURES and
> RDB$TRIGGERS tables, respectively.
> Application developers often want to hide the human readable version
> of their procedures and triggers to protect their intellectual
> property.SQL DDL offers no way to delete or hide that sourc e code. As
> an accommodation to that business need, Firebird 3 allows you to
> manipulate those two fields.
> <<<
> On the one hand Carlos is saying you can alter such fields with SQL
> DDL statements and on the other he is saying you can't; then goes on
> to provide SQL code that does just that. This explanation is somewhat
> confusing to say the least.
> However, maybe Firebird 3.x.x does NOT allow this as Carlos' manual
> suggests...

There is no contradiction. Firebird 3 no longer allows direct
manipulation of the system tables, but nulling the source columns of
procedures (and triggers and views) is explicitly allowed for the time
being. IIRC, there was discussion whether deleting sources should be
allowed at all, and if so in what form. So until a decision was reached,
the old 'feature' of direct manipulation of specifically those columns
is retained (although discouraged).