views:

261

answers:

3

Hi, folks. When i belived i was a genius and that metadata was my intelectual property, i developed a procedure in firebird to track changes on a single table, something with id´s and time stamps. So, i´ve done a mega clever move and deleted the source of this procedure.

Does anyone knows a BLR decoder, or the doc´s that i need to build one?

TIA.

+3  A: 

I've seen a BLR display tool (in Jason Wharton's IB admin tool), but it would only display BLR names, not transliterate back to SQL/proc language. I think what you're looking for doesn't exist.

You can get BLR documentation here, though.

Craig Stuntz
+2  A: 

If you still have the database there is a chance the procedure source is still there somewhere but marked as deleted. You may try to open the database file on a hex editor and search for the procedure name.

Douglas Tosi
+1  A: 

There is nice BLR (binary) to BLR (text) decoder in Firebird itself. You may call it from ISQL:

SQL> set term !;
SQL> create procedure p1
CON> as
CON>   declare n integer = 1;
CON> begin
CON>   n = n * 2;
CON> end!
SQL> set term ;!
SQL> 
SQL> set blob all;
SQL> commit;
SQL> 
SQL> select rdb$procedure_blr from rdb$procedures where rdb$procedure_name = 'P1';

RDB$PROCEDURE_BLR 
================= 
             1a:3 
==============================================================================
RDB$PROCEDURE_BLR:  
            blr_version5,
            blr_begin,
               blr_message, 1, 1,0,
                  blr_short, 0,
               blr_begin,
                  blr_declare, 0,0, blr_long, 0,
                  blr_assignment,
                     blr_literal, blr_long, 0, 1,0,0,0,
                     blr_variable, 0,0,
                  blr_stall,
                  blr_label, 0,
                     blr_begin,
                        blr_begin,
                           blr_assignment,
                              blr_multiply,
                                 blr_variable, 0,0,
                                 blr_literal, blr_long, 0, 2,0,0,0,
                              blr_variable, 0,0,
                           blr_end,
                        blr_end,
                  blr_end,
               blr_send, 1,
                  blr_begin,
                     blr_assignment,
                        blr_literal, blr_short, 0, 0,0,
                        blr_parameter, 1, 0,0,
                     blr_end,
               blr_end,
            blr_eoc

==============================================================================
Adriano dos Santos Fernandes