Question

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.

Was it helpful?

Solution

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.

OTHER TIPS

There is nice BLR (binary) to BLR (text) decoder in Firebird itself. You can enable it with set blob all (or set blobdisplay all). You can 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

==============================================================================

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top