FIREBIRD BLR DECODER - PullRequest
       11

FIREBIRD BLR DECODER

1 голос
/ 03 декабря 2009

люди. Когда я поверил, что я гений и эти метаданные были моей интеллектуальной собственностью, я разработал в Firebird процедуру для отслеживания изменений в одной таблице, что-то с идентификаторами и временными метками. Итак, я сделал очень умный ход и удалил источник этой процедуры.

Кто-нибудь знает BLR-декодер или документы, которые мне нужны для его создания?

ТИА.

Ответы [ 3 ]

4 голосов
/ 06 декабря 2009

В самом Firebird есть хороший декодер от BLR (двоичный) до BLR (текст). Вы можете включить его с помощью set blob all (или set blobdisplay all). Вы можете позвонить из 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

==============================================================================
3 голосов
/ 03 декабря 2009

Я видел инструмент отображения BLR (в инструменте администрирования IB Джейсона Уортона), но он отображал только имена BLR, а не транслитерацию обратно на язык SQL / proc. Я думаю, что вы ищете не существует.

Вы можете получить документацию BLR здесь , однако.

2 голосов
/ 03 декабря 2009

Если у вас все еще есть база данных, есть вероятность, что источник процедуры все еще там, но помечен как удаленный. Вы можете попытаться открыть файл базы данных в шестнадцатеричном редакторе и найти имя процедуры.

...