[firebase-br] Alterar tabelas do sistema no Firebird 3

Carlos H. Cantu listas em warmboot.com.br
Qui Abr 23 20:37:39 -03 2020


Não é necessário dar GRANT pro SYSDBA, pois ele já pode tudo.

UG> Além de ter que criar uma nova coluna com um nome temporário com o tipo
UG> certo, fazer um update e depois deletar a coluna antiga e renomear a nova
UG> para o nome da antiga.

Já que você não quer recriar o banco com o subtype correto, não tem
outra forma.

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

UG> Pessoal, vi que no firebird 3 as tabelas RDB$ são READ ONLY.

UG> Eu fiz a recuperação de um banco que era FB2.5 porém, ao criar os metadados
UG> do banco novo (FB 3.0), ele criou os BLOBS que era SUB_TYPE 1 como SUB_TYPE
UG> 0.

UG> Já fiz o pump dos dados, e agora preciso alterar o SUB_TYPE dos BLOBS de 0
UG> para 1.

UG> No FB2.5 eu fiz isso através do update a seguir:

UG> UPDATE RDB$FIELDS SET
UG> RDB$FIELD_SUB_TYPE = 2
UG> WHERE RDB$FIELD_NAME in (
UG> select t1.RDB$FIELD_NAME FROM
UG> RDB$FIELDS t1
UG> join RDB$RELATION_FIELDS t2
UG> on t1.RDB$FIELD_NAME = t2.RDB$FIELD_SOURCE
UG> where t2.RDB$RELATION_NAME not CONTAINING '$'
UG> and t1.RDB$FIELD_TYPE = 261)

UG> e deu certo, Porém, no firebird 3.0 não consigo dar updates nas tabelas
UG> RDB$.

UG> Já tentei usar o seguinte comando:

UG> alter table NOME_TABELA alter COLUMN NOME_CAMPO type BLOB sub_type 1

UG> Porém no FB3 ele diz que não pode alterar o sub_type assim.


UG> Já tentei procurar no RELEASE NOTE e achei o seguinte:

UG>   User Privileges for Metadata Changes

UG> Dmitry Yemanov with Roman Simakov

UG> In Firebird 3, the system tables are read-only. This SQL syntax provides
UG> the means to assign metadata write privileges to specified users or roles
UG> for specified objects. See Tracker item CORE-735.

UG> Note Some people have been applying the nickname “DDL privileges” to this
UG> feature. Don't confuse it with “DDL triggers”! A more useful nickname would
UG> be “Metadata privileges”. Syntax Patterns Granting metadata privileges:

UG>  GRANT CREATE TO [USER | ROLE] | [WITH GRANT OPTION];
UG>  GRANT ALTER ANY TO [USER | ROLE] | [WITH GRANT OPTION];
UG>  GRANT DROP ANY TO [USER | ROLE] | [WITH GRANT OPTION];

UG> Executei o comando: GRANT ALTER ANY TABLE TO SYSDBA;

UG> porém ainda não tive sucesso...


UG> Além de ter que criar uma nova coluna com um nome temporário com o tipo
UG> certo, fazer um update e depois deletar a coluna antiga e renomear a nova
UG> para o nome da antiga.


UG> Observação: Fica inviável restaurar o banco antigo novamente, pois já está
UG> no cliente e já contem dados atualizados.

UG> Alguém sabe o que posso fazer?

UG> É possível fazer um downgrade do FB3.0 para o 2.5 apenas com backup
UG> restore, se eu não utilizei nada do FB3 no banco ainda?

UG> Desde já agradeço a ajuda de vocês! :)
UG> --
UG> ______________________________________________
UG> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
UG> Para saber como gerenciar/excluir seu cadastro na lista, use:
UG> http://www.firebase.com.br/fb/artigo.php?id=1107
UG> Para consultar mensagens antigas:
UG> http://www.firebase.com.br/pesquisa_lista.html





Mais detalhes sobre a lista de discussão lista