[firebase-br] Problema de Charset em trigger/Sps

Eduardo Bahiense eduardo em icontroller.com.br
Seg Set 22 11:19:40 -03 2008


Bom dia

Estou tendo problemas em bases restauradas de backups gerados no linux 
(debian) e restauradas em máquinas windows (XP sp2).

Temos uma SP que gera os feriados nacionais com Páscoa, carnaval, entre 
outros e alguma triggers auto-geradas que contêm caracteres acentuados.

O problema foi detectado ao se extrair o metadata pelo IBExpert e 
ocorrer erro de "Can not transliterate between character sets".

Detalhes:

1. Ambas as máquinas utilizam a versão 2.1
2. As bases foram migradas do 2.0 por bkp/restore
3. Após o restore foi rodada a rotina de corrigir metadata
4. Dropamos todas as triggers e sp's e recriamos, na tentativa de resolver
5. No windows, isso resolve (dropar e recriar)
6. No linux, pelo ISQL, consegue-se visualizar o metadata da SP 
(RDB$PROCEDURE_SOURCE), porém, pelo IBWebAdmin, o metadata não é exibido.
7. No Windows também exibe normalmente, só que com caracteres errados 
('Pßscoa') e se tentar abrir pelo IBExpert ou qualquer outra ferramenta 
adminstrativa, dá o erro citado acima.
8. Em ambos, a procedure executa normalmente, aplicando os caracteres 
acentuados corretamente. Acredito que a exibição de caracter acentuado 
trocado ocorra no windows por falha do terminal CMD do windows e não 
pelo ISQL em si.
9. Tanto no windows como no linux, um SELECT * FROM RDB$PROCEDURES 
resulta, para cada registro a mensagem:
==============================================================================
RDB$PROCEDURE_BLR:
BLOB display set to subtype 1. This BLOB: subtype = 2
==============================================================================

É isso. Tudo funciona normal. Nas triggers, tiramos a acentuação pois 
era apenas um comentário "Trigger criada automaticamente, qualquer 
alteração será sobreescrita".

O problema é extrair o metadata pelo IBExpert. Temos que lembrar de não 
incluir a SP de Feriados, se não ele pára.

Se alguém puder dar uma luz, será bem-vinda.


Abraço


Eduardo





Mais detalhes sobre a lista de discussão lista