[firebase-br] Migrar Firebird 3 para 5

Max Wolfring mwolfring em yahoo.com.br
Sábado Dezembro 20 09:44:10 -03 2025


 Bom dia!Muito obrigado, resolvemos o problema desta forma, fizamos a extração do metadata, corrigimos as funções que não existiam, retiramos as referências a UDFs, e tudo está funcionando, essas observações foram importantes para vermos o que estavamos fazendo de errado.

    On Friday, December 19, 2025 at 03:17:43 PM GMT-4, Gladiston Santana via lista <lista em firebase.com.br> wrote:  
 
 Funções para MOD e ABS já existem acho que desde a 2.5.
STRLEN poderia trocar CHAR_LENGTH
SUBSTR poderia trocar por SUBSTRING
RTRIM  poderia trocar por TRIM e TRIM+TRAILING:

> SELECT TRIM(TRAILING FROM '    Remove Espaços      ') FROM RDB$DATABASE;
> // Retorna 'Remove Espaços'
> SELECT TRIM(TRAILING '.' FROM 'Removendo pontos no final!....') FROM
> RDB$DATABASE; // Retorna 'Removendo pontos no final!'
>
O LTRIM voce teria que criar uma SQL Function para isso, ex:

> CREATE OR ALTER FUNCTION LTRIM_CUSTOM (
>    STR VARCHAR(32765)
> ) RETURNS VARCHAR(32765)
> AS
> DECLARE VARIABLE POS INTEGER = 1;
> DECLARE VARIABLE LEN INTEGER;
> BEGIN
>  IF (STR IS NULL) THEN
>      RETURN NULL;
>  LEN = CHAR_LENGTH(STR);
>  -- Percorre a string enquanto encontrar espaços
>  WHILE (POS <= LEN AND SUBSTRING(STR FROM POS FOR 1) = ' ') DO
>  BEGIN
>      POS = POS + 1;
>  END
>  -- Se POS ultrapassou LEN, a string só tinha espaços
>  IF (POS > LEN) THEN
>      RETURN '';
>  ELSE
>      -- Retorna do primeiro caractere não-espaço em diante
>      RETURN SUBSTRING(STR FROM POS);
> END

Ex:
SELECT LTRIM_CUSTOM('    teste123') FROM RDB$DATABASE;  // retorna
'Teste123'

Remova as dependências de UDF e depois faça backup e restaure no 5.

[]'s e sucesso.

Em sex., 19 de dez. de 2025 às 10:39, Max Wolfring via lista <
lista em firebase.com.br> escreveu:

> Bom dia!Estamos migrando banco de dados do Firebird 3 para o 5 e recebemos
> a mensagem:
> gbak: WARNING:function STRLEN is not defined
> gbak: WARNING:    module name or entrypoint could not be found
> gbak: WARNING:    function SUBSTR is not defined
> gbak: WARNING:    module name or entrypoint could not be found
> gbak: WARNING:    function LTRIM is not defined
> gbak: WARNING:    module name or entrypoint could not be found
> gbak: WARNING:    function RTRIM is not defined
> gbak: WARNING:    module name or entrypoint could not be found
> gbak: WARNING:    function ABS is not defined
> gbak: WARNING:    module name or entrypoint could not be found
> gbak: WARNING:    function MOD is not defined
> gbak: WARNING:    module name or entrypoint could not be foundExecutamos o
> script conforme recomendado no livro sobre migração para o Firebird 4 do
> Cantu:/opt/firebird/bin/isql -user sysdba -pas 4b6f4194 -i
> /opt/firebird/misc/upgrade/udf/udf_replace.sql banco.fdb
> e isso resolve quase tudo, continua dando mensageem nas funções MOD e ABS,
> como posso resolver isso?
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html
  


Mais detalhes sobre a lista de discussão lista