Novidades do Firebird 2

Propaganda
Novidades do Firebird 2
Rodrigo Gonçalves
[email protected]
17 de Novembro de 2006
Resumo
Este artigo apresenta as novidades do Firebird 2 de uma forma bem sucinta, deixando maiores detalhes sobre os aspectos abordados para serem
consultados através do livro Firebird - o banco de dados do novo milênio,
de Carlos H. Cantu. Ao final de cada item abordado serão incluı́das as
páginas referentes ao assunto no livro.
1
Novidades
Através da ferramenta ISQL, temos agora o comando show database; que nos
permite obter informações sobre o banco (semelhante ao comando gstat [1, p.
13].
A manutenção de usuários (criar, incluir, excluir) agora só pode ser feita via
API. Não é mais permitido acessar remotamente o banco de dados (isto tem
importância com relação a criação do usuário Replicador pelo Utilitários). [1,
p. 37].
Em relação à instalação das bibliotecas nas máquinas clientes, temos alguns
recursos novos no instalador para otimizar e acelerar o processo de instalação
(fazer o mesmo ser automático, sem intervenção do usuário para dar “Next”,
“Next”, ... [1, p. 20,21].
Conexões ao banco de dados não aceitam mais o protocolo local (o protocolo
mudou, portanto componentes feitos para trabalhar com o Firebird 1/1.5 não
funcionam com o 2). O protocolo TCP/IP funciona sem problemas.
Em comandos SELECT não é permitido mais misturar o nome da tabela
e seu alias. Portanto um comando SELECT a.nome, cl pacientes.idade
FROM cl pacientes a não é mais válido, sendo válido apenas SELECT
a.nome, a.idade FROM cl pacientes a ou SELECT nome, cl pacientes.
idade FROM cl pacientes [1, p. 75].
A função current timestamp agora trás milissegundos também no valor.
No Linux, para Kernels maiores ou iguais a versã o 2.6 (ou seja, em qualquer
distribuição nova de Linux - incluindo Mandrake/Mandriva) é recomendado
utilizar a versão NPLT do Firebird 2.
Em um Firebird 2 instalado no Linux, existe agora um script para trocar a senha do usuário SYSDBA em /opt/firebird/changeDBApassword.sh.
1
Este script irá pedir a senha atual, que vai estar no arquivo /opt/firebird/
SYSDBA.password, bastando dar um cat nele para ver a senha.
Alguns problemas com o banco de dados que originavam buffer overflows
foram corrigidos nesta nova versão [1, p. 45,46].
Temos agora o predicado SKIP em comandos SELECT para pular os n primeiros registros [1, p. 72,72].
Pode-ser fazer um cast de parâmetros agora - SELECT * FROM cl pacientes
WHERE nome = CAST(:nome AS VARCHAR(50)) [1, p. 73].
Foi implementado o recurso de crossjoin, para permitir o produto cartesiano
entre tabelas [1, p. 78.79].
A cláusula GROUP BY agora aceita apelidos de campos e expressões para fazer
o agrupamento [1, p. 80].
O comando UNION agora está mais inteligente e consegue compatibilizar
mais tipos de dados sem a necessidade de casts [1, p. 81].
Existe agora a clásula WITH LOCK em comandos SELECT, que trava os registros retornados contra edição por outros usuários até o fim da transação [1, p.
86].
Temos agora a possibilidade de fazer consultas sobre dados de outras consultas: SELECT ... FROM (SELECT ... FROM (SELECT ... FROM tabela))
[1, p. 89,90].
Comandos SELECT ordenando por um campo sendo usado para cálculo (AVG,
SUM) não são mais permitidos [1, p. 91].
O comando SELECT agora tem uma cláusula ROWS que tem um funcionamento
que engloba as cláusulas FIRST/SKIP, que segue o SQL padrão ANSI [1, p. 95].
Temos novos operadores de comparação: !¿, !¡, ˜¡, etc. [1, p. 102].
Podemos especificar um collate especı́fico na cláusula WHERE, que nos permite
por exemplo filtrar independente de acentos [1, p. 102].
Temos a cláusla ESCAPE em comandos SQL agora para indicar um caracter
como caracter de escape e permitir que coloquemos caracteres como % em um
SELECT [1, p. 107].
Predicados existenciais estão disponı́veis: ALL, ANY, EXISTS, etc., que nos
permitem algumas consultas otimizadas [1, p. 109].
Temos agora o operador DISTINCT, que tem um funcionamento igual ao <>
porém sabe tratar corretamente campos nulos [1, p. 116, 117].
Podemos agora usar a sintaxe SEQUENCE ao invés de GENERATOR,pois ela segue
o SQL Padrão ANSI e tem alguns recursos adicionais [1, p. 134].
Views agora são atualizáveis [1, p. 140,141].
Podemos fazer o INSERT em uma tabela a partir dos dados de uma consulta
(INSERT INTO ... SELECT * FROM ... [1, p. 151].
Podemos agora incluir no comando INSERT uma cláusula RETURNING que nos
permite retornar valores passados ao INSERT (útil especialmente para quando
damos INSERT via generator e queremos o valor do nov o handle) [1, p. 152].
Podemos obter o dia da semana de uma data através da função WEEKDAY [1,
p. 159].
Temos agora o comando SUBSTRING em SELECTs [1, p. 160].
Também temos o comando TRIM em SELECTs [1, p. 163].
2
Agora podemos usar o comando RECREATE TRIGGER para criar uma nova
trigger ou atualizar uma existente sem precisar verificar se a mesma existe ou
não [1, p. 173].
Além do CASE, temos agora as funções IIF e NULLIIF em comandos SQL [1,
p. 183-185].
Podemos agora usar a variável USER SESSION e a função $rdb setcontext
para definir variáveis que ficam disponı́veis a todos os comandos SQLs de uma
conexão (semelhante a uma sessão em PHP) [1, p. 208].
Temos também a variável SYSTEM para obter informação sobre o servidor e
a conexão ao banco de dados [1, p. 210].
Foram realizadas otimizações nos ı́ndices do banco de dados que melhoram
a performance do mesmo depois de vários dias em operação, além de outras
otimizações diversas [1, p. 248,251 ].
É possı́vel agora criar ı́ndices em cima de campos calculados [1, p. 251].
O Garbage Collector foi melhorado, ajudando na performance do banco no
decorrer de sua utilizaçào por vários diass/semanas [1, p. 258-262].
Temos agora o comando gfix -shut -single que garante que apenas uma
conexão ao banco de dados será permitida - muito útil para fazer manutenção
em um banco de dados garantido que nenhum usuário irá conectar no mesmo MNGUtilitários [1, p. 264, 265].
Por último temos o comando gfix -shut -full que impede qualquer conexão ao banco de dados - útil para derrubar o banco de forma garantida que
nenhum usuário consiga conectar nele - bom para renomear o banco de dados
sem precisar parar o banco [1, p. 264].
Referências
[1] Carlos H. Cantú. Firebird 2.0 - O Banco de Dados do Novo Milênio. Editora
Ciência Moderna, 2006.
3
Download